$resp = $this->get('/mfa/verify');
$resp->assertSee('Verify Access');
$resp->assertSee('Enter the code, generated using your mobile app, below:');
- $resp->assertElementExists('form[action$="/mfa/totp/verify"] input[name="code"]');
+ $resp->assertElementExists('form[action$="/mfa/totp/verify"] input[name="code"][autofocus]');
$google2fa = new Google2FA();
$resp = $this->post('/mfa/totp/verify', [
/** @var TestResponse $mfaView */
$mfaView = $this->followingRedirects()->post('/login', [
- 'email' => $user->email,
+ 'email' => $user->email,
'password' => 'password',
]);
/** @var TestResponse $resp */
$resp = $this->followingRedirects()->post('/login', [
- 'email' => $user->email,
+ 'email' => $user->email,
'password' => 'password',
]);
$resp->assertElementContains('a[href$="/mfa/setup"]', 'Configure');
$this->get('/mfa/backup_codes/generate');
- $this->followingRedirects()->post('/mfa/backup_codes/confirm');
+ $resp = $this->post('/mfa/backup_codes/confirm');
+ $resp->assertRedirect('/login');
$this->assertDatabaseHas('mfa_values', [
'user_id' => $user->id,
]);
+ $resp = $this->get('/login');
+ $resp->assertSeeText('Multi-factor method configured, Please now login again using the configured method.');
+
$resp = $this->followingRedirects()->post('/login', [
- 'email' => $user->email,
+ 'email' => $user->email,
'password' => 'password',
]);
$resp->assertSeeText('Enter one of your remaining backup codes below:');
$role = $user->roles->first();
$role->mfa_enforced = true;
$role->save();
+
try {
$loginService->login($user, 'testing');
} catch (StoppedAuthenticationException $e) {
$resp = $this->call($method, $path);
$resp->assertRedirect('/login');
}
-
}
/**
- * @return Array<User, string, TestResponse>
+ * @return array<User, string, TestResponse>
*/
protected function startTotpLogin(): array
{
$user->save();
MfaValue::upsertWithValue($user, MfaValue::METHOD_TOTP, $secret);
$loginResp = $this->post('/login', [
- 'email' => $user->email,
+ 'email' => $user->email,
'password' => 'password',
]);
}
/**
- * @return Array<User, string, TestResponse>
+ * @return array<User, string, TestResponse>
*/
- protected function startBackupCodeLogin($codes = ['kzzu6-1pgll','bzxnf-plygd','bwdsp-ysl51','1vo93-ioy7n','lf7nw-wdyka','xmtrd-oplac']): array
+ protected function startBackupCodeLogin($codes = ['kzzu6-1pgll', 'bzxnf-plygd', 'bwdsp-ysl51', '1vo93-ioy7n', 'lf7nw-wdyka', 'xmtrd-oplac']): array
{
$user = $this->getEditor();
$user->password = Hash::make('password');
$user->save();
MfaValue::upsertWithValue($user, MfaValue::METHOD_BACKUP_CODES, json_encode($codes));
$loginResp = $this->post('/login', [
- 'email' => $user->email,
+ 'email' => $user->email,
'password' => 'password',
]);
return [$user, $codes, $loginResp];
}
-
-}
\ No newline at end of file
+}