namespace tests\unit\models;
use app\models\User;
-use Yii;
-use yii_app\records\Admin;
/**
- * Tests for User model
- *
- * @group database
+ * Tests for mock User model (in-memory user data)
+ * This tests the basic Yii2 IdentityInterface implementation
*/
class UserTest extends \Codeception\Test\Unit
{
- protected function _before(): void
+ /**
+ * Test finding user by ID
+ */
+ public function testFindUserById(): void
{
- // Skip tests if database is not available
- try {
- Yii::$app->db->open();
- } catch (\Exception $e) {
- $this->markTestSkipped('Database connection not available: ' . $e->getMessage());
- }
+ // Test existing user
+ $user = User::findIdentity('100');
+ $this->assertNotNull($user);
+ $this->assertEquals('admin', $user->username);
+
+ // Test non-existing user
+ $this->assertNull(User::findIdentity('999'));
}
- public function testFindUserById()
+ /**
+ * Test finding user by access token
+ */
+ public function testFindUserByAccessToken(): void
{
- verify($user = Admin::findIdentity(1))->notEmpty();
- verify($user->login_user)->equals('root');
+ // Test existing token
+ $user = User::findIdentityByAccessToken('100-token');
+ $this->assertNotNull($user);
+ $this->assertEquals('admin', $user->username);
- verify(User::findIdentity(999))->empty();
+ // Test non-existing token
+ $this->assertNull(User::findIdentityByAccessToken('non-existing'));
}
- public function testFindUserByAccessToken()
+ /**
+ * Test finding user by username
+ */
+ public function testFindUserByUsername(): void
{
- verify($user = User::findIdentityByAccessToken('100-token'))->notEmpty();
- verify($user->username)->equals('admin');
+ // Test existing username
+ $user = User::findByUsername('admin');
+ $this->assertNotNull($user);
+ $this->assertEquals('100', $user->id);
- verify(User::findIdentityByAccessToken('non-existing'))->empty();
+ // Test non-existing username
+ $this->assertNull(User::findByUsername('not-admin'));
}
- public function testFindUserByUsername()
+ /**
+ * Test auth key validation
+ */
+ public function testValidateAuthKey(): void
{
- verify($user = User::findByUsername('admin'))->notEmpty();
- verify(User::findByUsername('not-admin'))->empty();
+ $user = User::findByUsername('admin');
+ $this->assertNotNull($user);
+
+ // Valid auth key
+ $this->assertTrue($user->validateAuthKey('test100key'));
+
+ // Invalid auth key
+ $this->assertFalse($user->validateAuthKey('wrong-key'));
}
/**
- * @depends testFindUserByUsername
+ * Test password validation
*/
- public function testValidateUser()
+ public function testValidatePassword(): void
{
$user = User::findByUsername('admin');
- verify($user->validateAuthKey('test100key'))->notEmpty();
- verify($user->validateAuthKey('test102key'))->empty();
+ $this->assertNotNull($user);
+
+ // Valid password
+ $this->assertTrue($user->validatePassword('admin'));
- verify($user->validatePassword('admin'))->notEmpty();
- verify($user->validatePassword('123456'))->empty();
+ // Invalid password
+ $this->assertFalse($user->validatePassword('wrong-password'));
}
+ /**
+ * Test getId method
+ */
+ public function testGetId(): void
+ {
+ $user = User::findIdentity('100');
+ $this->assertEquals('100', $user->getId());
+ }
+
+ /**
+ * Test getAuthKey method
+ */
+ public function testGetAuthKey(): void
+ {
+ $user = User::findIdentity('100');
+ $this->assertEquals('test100key', $user->getAuthKey());
+ }
}