From c4f01e561dc9e53db5018b3b561c61502bed7941 Mon Sep 17 00:00:00 2001 From: MGatner Date: Wed, 27 Apr 2022 19:00:54 +0000 Subject: [PATCH] Fix login tests --- src/Entities/User.php | 4 ++- tests/controllers/LoginTest.php | 49 +++++++-------------------------- 2 files changed, 13 insertions(+), 40 deletions(-) diff --git a/src/Entities/User.php b/src/Entities/User.php index ae0632c..65ed98d 100644 --- a/src/Entities/User.php +++ b/src/Entities/User.php @@ -33,6 +33,8 @@ class User extends Entity * when they are accessed. */ protected $casts = [ + 'username' => 'string', + 'email' => 'string', 'active' => 'boolean', 'force_pass_reset' => 'boolean', ]; @@ -150,7 +152,7 @@ public function deactivate() */ public function isActivated(): bool { - return isset($this->attributes['active']) && $this->attributes['active'] === true; + return $this->active; } /** diff --git a/tests/controllers/LoginTest.php b/tests/controllers/LoginTest.php index 4bcfb9a..11bd90b 100644 --- a/tests/controllers/LoginTest.php +++ b/tests/controllers/LoginTest.php @@ -54,7 +54,10 @@ public function testAttemptLoginValidationErrors() $this->asserttrue(isset($_SESSION['_ci_validation_errors'])); } - public function testAttemptLoginSuccess() + /** + * @dataProvider rememberMeProvider + */ + public function testAttemptLoginSuccess(bool $remembering) { // Create user $user = [ @@ -81,7 +84,7 @@ public function testAttemptLoginSuccess() // Just make sure since it's a default $config = config('Auth'); - $config->allowRemembering = false; + $config->allowRemembering = $remembering; \CodeIgniter\Config\Factories::injectMock('Config', 'Auth', $config); $result = $this->withUri(site_url('login')) @@ -91,46 +94,14 @@ public function testAttemptLoginSuccess() $this->assertTrue($result->isRedirect()); $this->assertSame(lang('Auth.loginSuccess'), $_SESSION['message']); - $this->assertFalse($result->response()->hasCookie('remember')); + $this->assertSame($remembering, $result->response()->hasCookie('remember')); } - public function testAttemptLoginSuccessWithRememberMe() + public function rememberMeProvider() { - // Create user - $user = [ - 'username' => 'Joe Cool', - 'email' => 'jc@example.com', - 'password' => 'xaH96AhjglK', - 'active' => 1, + return [ + [true], + [false], ]; - $this->createUser($user); - - // Set form input - $data = [ - 'login' => $user['username'], - 'password' => $user['password'], - 'remember' => 'on', - ]; - $globals = [ - 'request' => $data, - 'post' => $data, - ]; - - $request = service('request', null, false); - $this->setPrivateProperty($request, 'globals', $globals); - - // Just make sure since it's a default - $config = config('Auth'); - $config->allowRemembering = true; - \CodeIgniter\Config\Factories::injectMock('Config', 'Auth', $config); - - $result = $this->withUri(site_url('login')) - ->withRequest($request) - ->controller(AuthController::class) - ->execute('attemptLogin'); - - $this->assertTrue($result->isRedirect()); - $this->assertSame(lang('Auth.loginSuccess'), $_SESSION['message']); - $this->assertTrue($result->response()->hasCookie('remember')); } }