diff --git a/src/Linna/Authorization/PermissionExtended.php b/src/Linna/Authorization/PermissionExtended.php index 76945a3..e520542 100644 --- a/src/Linna/Authorization/PermissionExtended.php +++ b/src/Linna/Authorization/PermissionExtended.php @@ -19,7 +19,7 @@ */ class PermissionExtended extends Permission { - use userTrait; + use UserTrait; use RoleTrait; /** diff --git a/tests/Linna/Authorization/AuthorizationTest.php b/tests/Linna/Authorization/AuthorizationTest.php index 716fc2b..7e38c56 100644 --- a/tests/Linna/Authorization/AuthorizationTest.php +++ b/tests/Linna/Authorization/AuthorizationTest.php @@ -47,11 +47,16 @@ class AuthorizationTest extends TestCase */ public static function setUpBeforeClass(): void { + $pdo = (new StorageFactory('pdo', PdoOptionsFactory::getOptions()))->get(); + $session = new Session(); $password = new Password(); $authentication = new Authentication($session, $password); - // fix here - $permissionMapper = new PermissionExtendedMapper((new StorageFactory('pdo', PdoOptionsFactory::getOptions()))->get() /* other arguments */); + + $userMapper = new UserMapper($pdo, $password); + $roleMapper = new RoleMapper($pdo); + + $permissionMapper = new PermissionExtendedMapper($pdo, $roleMapper, $userMapper); self::$password = $password; self::$session = $session; diff --git a/tests/Linna/Authorization/RoleTest.php b/tests/Linna/Authorization/RoleTest.php index f1c82ef..312513c 100644 --- a/tests/Linna/Authorization/RoleTest.php +++ b/tests/Linna/Authorization/RoleTest.php @@ -12,26 +12,16 @@ namespace Linna\Authorization; -use Linna\Authentication\Password; -use Linna\Authentication\UserMapper; -use Linna\Storage\ExtendedPDO; -use Linna\Storage\StorageFactory; +use DateTimeImmutable; use PHPUnit\Framework\TestCase; -use Linna\TestHelper\Pdo\PdoOptionsFactory; +/** + * Role Test. + */ class RoleTest extends TestCase { - /** @var PermissionMapper The permission mapper */ - protected static PermissionMapper $permissionMapper; - - /** @var EnhancedUserMapper The enhanced user mapper */ - protected static EnhancedUserMapper $enhancedUserMapper; - - /** @var RoleMapper The role mapper */ - protected static RoleMapper $roleMapper; - - /** @var ExtendedPDO Database connection. */ - protected static ExtendedPDO $pdo; + /** @var Role The role instance */ + protected static Role $role; /** * Set up before class. @@ -40,54 +30,33 @@ class RoleTest extends TestCase */ public static function setUpBeforeClass(): void { - /*$options = [ - 'dsn' => $GLOBALS['pdo_mysql_dsn'], - 'user' => $GLOBALS['pdo_mysql_user'], - 'password' => $GLOBALS['pdo_mysql_password'], - 'options' => [ - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_PERSISTENT => false, - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci', - ], - ];*/ - - $pdo = (new StorageFactory('pdo', PdoOptionsFactory::getOptions()))->get(); - - $password = new Password(); - - $permissionMapper = new PermissionMapper($pdo); - $userMapper = new UserMapper($pdo, $password); - $roleToUserMapper = new RoleToUserMapper($pdo, $password); - $enhancedUserMapper = new EnhancedUserMapper($pdo, $password, $permissionMapper, $roleToUserMapper); - - self::$pdo = $pdo; - self::$roleMapper = new RoleMapper($pdo, $permissionMapper, $userMapper, $roleToUserMapper); - self::$permissionMapper = $permissionMapper; - self::$enhancedUserMapper = $enhancedUserMapper; - } - - /** - * Tear down after class. - * - * @return void - */ - public static function tearDownAfterClass(): void - { - //self::$pdo = null; - //self::$roleMapper = null; - //self::$permissionMapper = null; - //self::$enhancedUserMapper = null; + self::$role = new Role( + name: 'test_role', + description: 'test_role_description', + active: 1, + created: new DateTimeImmutable(), + lastUpdate: new DateTimeImmutable() + ); } /** - * Test new role instance. - * + * Test new role instance. + * * @return void - */ + */ public function testNewRoleInstance(): void { - $this->assertInstanceOf(Role::class, self::$roleMapper->create()); + $role = self::$role; + + $this->assertInstanceOf(Role::class, $role); + $this->assertInstanceOf(DateTimeImmutable::class, $role->created); + $this->assertInstanceOf(DateTimeImmutable::class, $role->lastUpdate); + + //id null because not saved into persistent storage + $this->assertSame(null, $role->id); + $this->assertSame('test_role', $role->name); + $this->assertSame('test_role_description', $role->description); + $this->assertSame(1, $role->active); } /** @@ -95,7 +64,7 @@ public function testNewRoleInstance(): void * * @return void */ - public function testConstructorTypeCasting(): void + /*public function testConstructorTypeCasting(): void { $role = self::$roleMapper->fetchById(1); @@ -105,14 +74,14 @@ public function testConstructorTypeCasting(): void $this->assertGreaterThan(0, $role->getId()); $this->assertGreaterThan(0, $role->id); - } + }*/ /** * User Role data provider. * * @return array */ - public static function userRoleProvider(): array + /*public static function userRoleProvider(): array { return [ [1, 1, true], @@ -150,15 +119,15 @@ public static function userRoleProvider(): array * * @return void */ - public function testIsUserInRole(int $roleId, int $userId, bool $result): void - { - /** @var Role Role Class. */ - $role = self::$roleMapper->fetchById($roleId); + //public function testIsUserInRole(int $roleId, int $userId, bool $result): void + //{ + /** @var Role Role Class. */ + // $role = self::$roleMapper->fetchById($roleId); - /** @var EnhancedUser Enhanced User Class. */ - $user = self::$enhancedUserMapper->fetchById($userId); - $this->assertEquals($result, $role->isUserInRole($user)); - } + /** @var EnhancedUser Enhanced User Class. */ + // $user = self::$enhancedUserMapper->fetchById($userId); + // $this->assertEquals($result, $role->isUserInRole($user)); + //} /** * Test is user in role by id. @@ -171,9 +140,8 @@ public function testIsUserInRole(int $roleId, int $userId, bool $result): void * * @return void */ - public function testIsUserInRoleById(int $roleId, int $userId, bool $result): void + /*public function testIsUserInRoleById(int $roleId, int $userId, bool $result): void { - /** @var Role Role Class. */ $role = self::$roleMapper->fetchById($roleId); $this->assertEquals($result, $role->isUserInRoleById($userId)); @@ -190,12 +158,12 @@ public function testIsUserInRoleById(int $roleId, int $userId, bool $result): vo * * @return void */ - public function testIsUserInRoleByName(int $roleId, int $userId, bool $result): void + /*public function testIsUserInRoleByName(int $roleId, int $userId, bool $result): void { - /** @var Role Role Class. */ + $role = self::$roleMapper->fetchById($roleId); - /** @var EnhancedUser Enhanced User Class. */ + $user = self::$enhancedUserMapper->fetchById($userId); $this->assertEquals($result, $role->isUserInRoleByName($user->name)); } @@ -206,7 +174,7 @@ public function testIsUserInRoleByName(int $roleId, int $userId, bool $result): * @return array * @return void */ - public static function rolePermissionProvider(): array + /*public static function rolePermissionProvider(): array { return [ [1, 1, true], @@ -241,12 +209,12 @@ public static function rolePermissionProvider(): array * * @return void */ - public function testRoleCan(int $roleId, int $permissionId, bool $result): void + /*public function testRoleCan(int $roleId, int $permissionId, bool $result): void { - /** @var Role Role Class. */ + $role = self::$roleMapper->fetchById($roleId); - /** @var Permission Permission Class. */ + $permission = self::$permissionMapper->fetchById($permissionId); $this->assertEquals($result, $role->can($permission)); } @@ -262,9 +230,9 @@ public function testRoleCan(int $roleId, int $permissionId, bool $result): void * * @return void */ - public function testRoleCanById(int $roleId, int $permissionId, bool $result): void + /*public function testRoleCanById(int $roleId, int $permissionId, bool $result): void { - /** @var Role Role Class. */ + $role = self::$roleMapper->fetchById($roleId); $this->assertEquals($result, $role->canById($permissionId)); @@ -281,13 +249,12 @@ public function testRoleCanById(int $roleId, int $permissionId, bool $result): v * * @return void */ - public function testRoleCanByName(int $roleId, int $permissionId, bool $result): void + /*public function testRoleCanByName(int $roleId, int $permissionId, bool $result): void { - /** @var Role Role Class. */ + $role = self::$roleMapper->fetchById($roleId); - /** @var Permission Permission Class. */ $permission = self::$permissionMapper->fetchById($permissionId); $this->assertEquals($result, $role->canByName($permission->name)); - } + }*/ } diff --git a/tests/Linna/Authorization/UserTest.php b/tests/Linna/Authorization/UserTest.php index 4e905ec..35ed114 100644 --- a/tests/Linna/Authorization/UserTest.php +++ b/tests/Linna/Authorization/UserTest.php @@ -12,17 +12,17 @@ namespace Linna\Authorization; -use Linna\Storage\StorageFactory; +use DateTimeImmutable; +use Linna\Authentication\Password; use PHPUnit\Framework\TestCase; -use Linna\TestHelper\Pdo\PdoOptionsFactory; /** * User Test. */ class UserTest extends TestCase { - /** @var UserMapper The user mapper */ - protected static UserMapper $userMapper; + /** @var User The user instance */ + protected static User $user; /** * Set up before class. @@ -31,34 +31,17 @@ class UserTest extends TestCase */ public static function setUpBeforeClass(): void { - /*$options = [ - 'dsn' => $GLOBALS['pdo_mysql_dsn'], - 'user' => $GLOBALS['pdo_mysql_user'], - 'password' => $GLOBALS['pdo_mysql_password'], - 'options' => [ - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_PERSISTENT => false, - PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci', - ], - ];*/ - - self::$userMapper = new UserMapper( - (new StorageFactory('pdo', PdoOptionsFactory::getOptions()))->get(), - new Password() + self::$user = new User( + passwordUtility: new Password(), + name: 'test_user', + description: 'test_user_description', + email: 'test_user@email.com', + active: 1, + created: new DateTimeImmutable(), + lastUpdate: new DateTimeImmutable() ); } - /** - * Tear down after class. - * - * @return void - */ - public static function tearDownAfterClass(): void - { - //self::$userMapper = null; - } - /** * Test new user instance. * @@ -66,25 +49,19 @@ public static function tearDownAfterClass(): void */ public function testNewUserInstance(): void { - $this->assertInstanceOf(User::class, self::$userMapper->create()); - } + $user = self::$user; - /** - * Test constructor type casting. - * - * @return void - */ - /*public function testConstructorTypeCasting(): void - { - $user = self::$userMapper->fetchByName('root'); - - var_dump($user); - - $this->assertIsInt($user->getId()); - $this->assertIsInt($user->active); - - $this->assertGreaterThan(0, $user->getId()); - }*/ + $this->assertInstanceOf(User::class, $user); + $this->assertInstanceOf(DateTimeImmutable::class, $user->created); + $this->assertInstanceOf(DateTimeImmutable::class, $user->lastUpdate); + + //id null because not saved into persistent storage + $this->assertSame(null, $user->id); + $this->assertSame('test_user', $user->name); + $this->assertSame('test_user_description', $user->description); + $this->assertSame('test_user@email.com', $user->email); + $this->assertSame(1, $user->active); + } /** * Test set user password. @@ -93,13 +70,10 @@ public function testNewUserInstance(): void */ public function testSetUserPassword(): void { - /** @var User User Class. */ - $user = self::$userMapper->create(); + $user = self::$user; $user->setPassword('password'); - $this->assertInstanceOf(User::class, $user); - $this->assertTrue(\password_verify('password', $user->password)); } @@ -110,15 +84,14 @@ public function testSetUserPassword(): void */ public function testChangeUserPassword(): void { - /** @var User User Class. */ - $user = self::$userMapper->create(); + $user = self::$user; + ; $user->setPassword('old_password'); - $this->assertInstanceOf(User::class, $user); - $this->assertTrue($user->changePassword('new_password', 'old_password')); $this->assertTrue($user->changePassword('other_new_password', 'new_password')); + // other_new_password was the current old password $this->assertFalse($user->changePassword('password', 'wrong_password')); } }