Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev: error phpstan #738

Closed
datamweb opened this issue May 12, 2023 · 1 comment · Fixed by codeigniter4/settings#78
Closed

Dev: error phpstan #738

datamweb opened this issue May 12, 2023 · 1 comment · Fixed by codeigniter4/settings#78
Labels

Comments

@datamweb
Copy link
Collaborator

datamweb commented May 12, 2023

The new version settings [v2.1.1] has been released. This problem started from version 2.1.1.

Error: Cannot call method forget() on array|bool|float|int|object|string|void.
 ------ ------------------------------------------------------------------ 
  Line   tests/Authentication/Authenticators/SessionAuthenticatorTest.php  
 ------ ------------------------------------------------------------------ 
  112    Cannot call method forget() on                                    
         array|bool|float|int|object|string|void.                          
 ------ ------------------------------------------------------------------ 

see https://github.com/codeigniter4/shield/actions/runs/4960040688/jobs/8876233138?pr=736

Temporary solution:

-setting()->forget('Cookie.prefix');
+service('settings')->forget('Cookie.prefix');

public function testLoggedInWithRememberCookie(): void
{
unset($_SESSION['user']);
// Set Cookie.prefix
$cookiePrefix = 'prefix_';
setting('Cookie.prefix', $cookiePrefix);
$this->user->createEmailIdentity(['email' => '[email protected]', 'password' => 'secret']);
// Insert remember-me token.
/** @var RememberModel $rememberModel */
$rememberModel = model(RememberModel::class);
$selector = 'selector';
$validator = 'validator';
$expires = date('Y-m-d H:i:s', time() + setting('Auth.sessionConfig')['rememberLength']);
$rememberModel->rememberUser($this->user, $selector, hash('sha256', $validator), $expires);
// Set Cookie value for remember-me.
$token = $selector . ':' . $validator;
$cookieName = $cookiePrefix . setting('Auth.sessionConfig')['rememberCookieName'];
$_COOKIE[$cookieName] = $token;
$this->assertTrue($this->auth->loggedIn());
$authUser = $this->auth->getUser();
$this->assertInstanceOf(User::class, $authUser);
$this->assertSame($this->user->id, $authUser->id);
// Forget Cookie.prefix
setting()->forget('Cookie.prefix');
}

@kenjis
Copy link
Member

kenjis commented May 12, 2023

Sent PR to fix too sketchy @return.
codeigniter4/settings#78

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants