Skip to content

Commit

Permalink
PersonalAccessTokenAbilityEnumTest
Browse files Browse the repository at this point in the history
  • Loading branch information
ok200lyndon committed Aug 19, 2024
1 parent f8559f0 commit acb8e41
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 23 deletions.
58 changes: 35 additions & 23 deletions app/Enums/PersonalAccessTokenAbility.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,35 @@ enum PersonalAccessTokenAbility: string
case TEAMS_UPDATE = 'teams-update';
case TEAMS_DELETE = 'teams-delete';


public static function abilityLabels(): array
{
$returnArray = [
self::SUPER_ADMIN->value => 'Super Admin',
self::MY_PROFILE_CREATE->value => 'My Profile Create',
self::MY_PROFILE_READ->value => 'My Profile Read',
self::MY_PROFILE_UPDATE->value => 'My Profile Update',
self::MY_PROFILE_DELETE->value => 'My Profile Delete',
self::MY_TEAM_CREATE->value => 'My Team Create',
self::MY_TEAM_READ->value => 'My Team Read',
self::MY_TEAM_UPDATE->value => 'My Team Update',
self::MY_TEAM_DELETE->value => 'My Team Delete',
self::TEAMS_READ->value => 'Teams Read',
self::TEAMS_CREATE->value => 'Teams Create',
self::SYSTEM_STATISTICS_READ->value => 'System Statistics Read',
// MUST MATCH FULL LIS
return [
self::SUPER_ADMIN->value => 'Super Admin',
self::MY_PROFILE_CREATE->value => 'My Profile Create',
self::MY_PROFILE_READ->value => 'My Profile Read',
self::MY_PROFILE_UPDATE->value => 'My Profile Update',
self::MY_PROFILE_DELETE->value => 'My Profile Delete',
self::MY_TEAM_CREATE->value => 'My Team Create',
self::MY_TEAM_READ->value => 'My Team Read',
self::MY_TEAM_UPDATE->value => 'My Team Update',
self::MY_TEAM_DELETE->value => 'My Team Delete',
self::MY_TEAM_AUDIT_ITEMS_CREATE->value => 'My Team Audit Items Create',
self::MY_TEAM_AUDIT_ITEMS_READ->value => 'My Team Audit Items Read',
self::MY_TEAM_AUDIT_ITEMS_UPDATE->value => 'My Team Audit Items Update',
self::MY_TEAM_AUDIT_ITEMS_DELETE->value => 'My Team Audit Items Delete',
self::MY_TEAM_VOUCHERS_CREATE->value => 'My Team Vouchers Create',
self::MY_TEAM_VOUCHERS_READ->value => 'My Team Vouchers Read',
self::MY_TEAM_VOUCHERS_UPDATE->value => 'My Team Vouchers Update',
self::MY_TEAM_VOUCHERS_DELETE->value => 'My Team Vouchers Delete',
self::SYSTEM_STATISTICS_CREATE->value => 'System Statistics Create',
self::SYSTEM_STATISTICS_READ->value => 'System Statistics Read',
self::SYSTEM_STATISTICS_UPDATE->value => 'System Statistics Update',
self::SYSTEM_STATISTICS_DELETE->value => 'System Statistics Delete',
self::TEAMS_CREATE->value => 'Teams Create',
self::TEAMS_READ->value => 'Teams Read',
self::TEAMS_UPDATE->value => 'Teams Update',
self::TEAMS_DELETE->value => 'Teams Delete',
];

// Assert$returnArray
return $returnArray
}

/**
Expand All @@ -74,7 +82,6 @@ public static function platformAppTokenAbilities(): array
];
}


/**
* The abilities that a "redemption" app API token should have.
*
Expand All @@ -94,19 +101,24 @@ public static function groupsAbilityCasesWithDefinitions(): array
'name' => 'Super admin abilities',
'description' => 'A group of API abilities that allow an app to perform any / all actions on the API. Be careful assigning this ability!',
'abilities' => [
self::SUPER_ADMIN
]
self::SUPER_ADMIN,
],
],
[
'name' => 'Platform App',
'description' => 'Perform administrative tasks for your OFN platform implementation.',
'abilities' => self::platformAppTokenAbilities()
'abilities' => self::platformAppTokenAbilities(),
],
[
'name' => 'Redemptions',
'description' => 'A group of API abilities that allow an app to perform redemptions on the system.',
'abilities' => self::redemptionAppTokenAbilities()
'abilities' => self::redemptionAppTokenAbilities(),
],
];
}

public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
40 changes: 40 additions & 0 deletions tests/Unit/Enums/PersonalAccessTokenAbilityEnumTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

namespace Tests\Unit\Enums;

use App\Enums\PersonalAccessTokenAbility;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;

class PersonalAccessTokenAbilityEnumTest extends TestCase
{
#[Test]
public function itReturnsAllAbilityLabels(): void
{
self::assertIsArray(PersonalAccessTokenAbility::abilityLabels());
self::assertSameSize(PersonalAccessTokenAbility::cases(), PersonalAccessTokenAbility::abilityLabels());

foreach (PersonalAccessTokenAbility::abilityLabels() as $ability => $label) {
self::assertContains($ability, PersonalAccessTokenAbility::values());
}
}

#[Test]
public function itReturnsPlatformAppTokenAbilities(): void
{
$expectedPlatformAppTokenAbilities = [
PersonalAccessTokenAbility::TEAMS_READ->value => PersonalAccessTokenAbility::abilityLabels()[PersonalAccessTokenAbility::TEAMS_READ->value],
PersonalAccessTokenAbility::TEAMS_CREATE->value => PersonalAccessTokenAbility::abilityLabels()[PersonalAccessTokenAbility::TEAMS_CREATE->value],
PersonalAccessTokenAbility::SYSTEM_STATISTICS_READ->value => PersonalAccessTokenAbility::abilityLabels()[PersonalAccessTokenAbility::SYSTEM_STATISTICS_READ->value],
];

self::assertIsArray(PersonalAccessTokenAbility::platformAppTokenAbilities());
self::assertSameSize($expectedPlatformAppTokenAbilities, PersonalAccessTokenAbility::platformAppTokenAbilities());

foreach (PersonalAccessTokenAbility::platformAppTokenAbilities() as $key => $label) {
self::assertContains($key, array_keys($expectedPlatformAppTokenAbilities));
self::assertContains($label, $expectedPlatformAppTokenAbilities);
self::assertSame($label, $expectedPlatformAppTokenAbilities[$key]);
}
}
}

0 comments on commit acb8e41

Please sign in to comment.