mirror of
https://github.com/RobThree/TwoFactorAuth.git
synced 2026-08-17 18:44:30 +00:00
53 lines
1.8 KiB
PHP
53 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Providers\Rng;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use RobThree\Auth\Algorithm;
|
|
use RobThree\Auth\TwoFactorAuth;
|
|
use RobThree\Auth\TwoFactorAuthException;
|
|
|
|
class IRNGProviderTest extends TestCase
|
|
{
|
|
public function testCreateSecretThrowsOnInsecureRNGProvider(): void
|
|
{
|
|
$rng = new TestRNGProvider();
|
|
|
|
$tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng);
|
|
|
|
$this->expectException(TwoFactorAuthException::class);
|
|
$tfa->createSecret();
|
|
}
|
|
|
|
public function testCreateSecretOverrideSecureDoesNotThrowOnInsecureRNG(): void
|
|
{
|
|
$rng = new TestRNGProvider();
|
|
|
|
$tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng);
|
|
$this->assertSame('ABCDEFGHIJKLMNOP', $tfa->createSecret(80, false));
|
|
}
|
|
|
|
public function testCreateSecretDoesNotThrowOnSecureRNGProvider(): void
|
|
{
|
|
$rng = new TestRNGProvider(true);
|
|
|
|
$tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng);
|
|
$this->assertSame('ABCDEFGHIJKLMNOP', $tfa->createSecret());
|
|
}
|
|
|
|
public function testCreateSecretGeneratesDesiredAmountOfEntropy(): void
|
|
{
|
|
$rng = new TestRNGProvider(true);
|
|
|
|
$tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, $rng);
|
|
$this->assertSame('A', $tfa->createSecret(5));
|
|
$this->assertSame('AB', $tfa->createSecret(6));
|
|
$this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ', $tfa->createSecret(128));
|
|
$this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(160));
|
|
$this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(320));
|
|
$this->assertSame('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567A', $tfa->createSecret(321));
|
|
}
|
|
}
|