Files
authentication_provider_pas…/tests/php/Integration/PasswordAuthenticationTest.php
T
Sebastian 1cdc1b24a1
Integration Tests / Integration Tests (pull_request) Failing after 14m23s
feat: implement console command
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
2026-07-22 23:47:02 -04:00

81 lines
2.7 KiB
PHP

<?php
declare(strict_types=1);
namespace KTXT\AuthenticationProviderPassword\Tests\Integration;
/**
* Exercises the real /auth/start -> /auth/identify -> /auth/verify flow for
* the password provider, through the HTTP kernel end to end.
*/
class PasswordAuthenticationTest extends IntegrationTestCase
{
public function testAuthStartOffersPasswordMethod(): void
{
$start = static::request('GET', '/auth/start');
$this->assertSame(200, $start['status']);
$methodIds = array_column($start['body']['methods'] ?? [], 'id');
$this->assertContains('password', $methodIds);
}
public function testSuccessfulLoginReturnsTokens(): void
{
static::createUser('alice@example.test', 'Correct-Horse-1!');
$result = static::loginWithPassword('alice@example.test', 'Correct-Horse-1!');
$this->assertSame('success', $result['body']['status'] ?? null, json_encode($result['body']));
$this->assertNotNull($result['accessToken']);
$this->assertNotNull($result['refreshToken']);
$this->assertSame('alice@example.test', $result['body']['user']['identity'] ?? null);
}
public function testAccessTokenAuthorizesSubsequentRequests(): void
{
static::createUser('bob@example.test', 'Correct-Horse-2!');
$login = static::loginWithPassword('bob@example.test', 'Correct-Horse-2!');
$ping = static::authorizedRequest($login['accessToken'], 'GET', '/auth/ping');
$this->assertSame(200, $ping['status']);
$this->assertSame('ok', $ping['body']['status'] ?? null);
}
public function testWrongPasswordIsRejected(): void
{
static::createUser('carol@example.test', 'Correct-Horse-3!');
$result = static::loginWithPassword('carol@example.test', 'wrong-password');
$this->assertSame('failed', $result['body']['status'] ?? null);
$this->assertSame(401, $result['status']);
$this->assertNull($result['accessToken']);
}
public function testLoginFailsForUserWithoutAPasswordSet(): void
{
static::createUser('dave@example.test');
$result = static::loginWithPassword('dave@example.test', 'anything');
$this->assertSame('failed', $result['body']['status'] ?? null);
$this->assertSame(401, $result['status']);
}
public function testLoginFailsForUnknownIdentity(): void
{
$result = static::loginWithPassword('nobody@example.test', 'anything');
$this->assertSame('failed', $result['body']['status'] ?? null);
$this->assertSame(401, $result['status']);
}
public function testUnauthenticatedRequestToProtectedRouteIsRejected(): void
{
$ping = static::request('GET', '/auth/ping');
$this->assertSame(401, $ping['status']);
}
}