| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- <?php
- declare(strict_types=1);
- namespace App\Tests\Unit\Auth;
- use App\Domain\Auth\Token;
- use App\Domain\Auth\TokenIssuer;
- use App\Domain\Auth\TokenKind;
- use PHPUnit\Framework\TestCase;
- final class TokenIssuerTest extends TestCase
- {
- public function testIssuedTokenMatchesFormat(): void
- {
- $issuer = new TokenIssuer();
- foreach (TokenKind::cases() as $kind) {
- $raw = $issuer->issue($kind);
- self::assertSame(1, preg_match('/^irdb_(rep|con|adm|svc)_[A-Z2-7]{32}$/', $raw), "format mismatch for {$kind->value}: {$raw}");
- self::assertStringStartsWith('irdb_' . $kind->code() . '_', $raw);
- }
- }
- public function testIssuedTokensAreUnique(): void
- {
- $issuer = new TokenIssuer();
- $set = [];
- for ($i = 0; $i < 50; ++$i) {
- $set[$issuer->issue(TokenKind::Admin)] = true;
- }
- self::assertCount(50, $set);
- }
- public function testIssuedTokenRoundTripsThroughParse(): void
- {
- $issuer = new TokenIssuer();
- foreach (TokenKind::cases() as $kind) {
- $raw = $issuer->issue($kind);
- $parsed = Token::parse($raw);
- self::assertNotNull($parsed, "parse failed for {$raw}");
- self::assertSame($kind, $parsed->kind);
- self::assertSame($raw, $parsed->raw);
- }
- }
- }
|