diff --git a/tests/Providers/Rng/CSRNGProviderTest.php b/tests/Providers/Rng/CSRNGProviderTest.php index 39739e9..abb6488 100644 --- a/tests/Providers/Rng/CSRNGProviderTest.php +++ b/tests/Providers/Rng/CSRNGProviderTest.php @@ -11,11 +11,18 @@ class CSRNGProviderTest extends TestCase { use NeedsRngLengths; + /** + * @requires function random_bytes + */ public function testCSRNGProvidersReturnExpectedNumberOfBytes(): void { - $rng = new CSRNGProvider(); - foreach ($this->rngTestLengths as $l) { - $this->assertSame($l, strlen($rng->getRandomBytes($l))); + if (function_exists('random_bytes')) { + $rng = new CSRNGProvider(); + foreach ($this->rngTestLengths as $l) { + $this->assertSame($l, strlen($rng->getRandomBytes($l))); + } + } else { + $this->expectNotToPerformAssertions(); } } } diff --git a/tests/Providers/Rng/IRNGProviderTest.php b/tests/Providers/Rng/IRNGProviderTest.php index fd2c742..743774a 100644 --- a/tests/Providers/Rng/IRNGProviderTest.php +++ b/tests/Providers/Rng/IRNGProviderTest.php @@ -15,4 +15,17 @@ class IRNGProviderTest extends TestCase $tfa = new TwoFactorAuth('Test', 6, 30, Algorithm::Sha1, null, null); $this->assertIsString($tfa->createSecret()); } + + public function testCreateSecretGeneratesDesiredAmountOfEntropy(): void + { + $rng = new TestRNGProvider(); + + $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)); + } } diff --git a/tests/Providers/Rng/TestRNGProvider.php b/tests/Providers/Rng/TestRNGProvider.php new file mode 100644 index 0000000..fd5b591 --- /dev/null +++ b/tests/Providers/Rng/TestRNGProvider.php @@ -0,0 +1,24 @@ +