56 lines
1.8 KiB
PHP
56 lines
1.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Tests\Unit\Infra\Adapters\Services;
|
||
|
|
|
||
|
|
use Application\Security\Models\ValueObjects\ClientIdentifier;
|
||
|
|
use Application\Security\Models\ValueObjects\ClientSecret;
|
||
|
|
use Infra\Adapters\Services\ClientCredentialGeneratorImpl;
|
||
|
|
|
||
|
|
covers(ClientCredentialGeneratorImpl::class);
|
||
|
|
|
||
|
|
describe('ClientCredentialGeneratorImpl Unit Tests', function (): void {
|
||
|
|
it('generates a valid client identifier', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$generator = new ClientCredentialGeneratorImpl();
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$identifier = $generator->generateIdentifier();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($identifier)->toBeInstanceOf(ClientIdentifier::class)
|
||
|
|
->and($identifier->value)->toStartWith('arcadia_id_')
|
||
|
|
->and(strlen($identifier->value))->toBe(43);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('generates a valid client secret', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$generator = new ClientCredentialGeneratorImpl();
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$secret = $generator->generateSecret();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($secret)->toBeInstanceOf(ClientSecret::class)
|
||
|
|
->and($secret->value)->toStartWith('arcadia_sec_')
|
||
|
|
->and(strlen($secret->value))->toBeGreaterThanOrEqual(86)
|
||
|
|
->and(strlen($secret->value))->toBeLessThanOrEqual(120);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('generates unique credentials on subsequent calls', function (): void {
|
||
|
|
// GIVEN
|
||
|
|
$generator = new ClientCredentialGeneratorImpl();
|
||
|
|
|
||
|
|
// WHEN
|
||
|
|
$id1 = $generator->generateIdentifier();
|
||
|
|
$id2 = $generator->generateIdentifier();
|
||
|
|
$sec1 = $generator->generateSecret();
|
||
|
|
$sec2 = $generator->generateSecret();
|
||
|
|
|
||
|
|
// THEN
|
||
|
|
expect($id1->value)->not->toBe($id2->value)
|
||
|
|
->and($sec1->value)->not->toBe($sec2->value);
|
||
|
|
});
|
||
|
|
});
|