From 06220d4a543b759f2d32e14d2f7b5fd61a8fe37c Mon Sep 17 00:00:00 2001 From: Nicolas CARPi Date: Tue, 16 Apr 2024 00:06:40 +0200 Subject: [PATCH] Revert "remove pointless test rng class" This reverts commit f6da6bee6db93b47a1a27f666543ea01c167cf5b. --- tests/Providers/Rng/CSRNGProviderTest.php | 13 +++++++++--- tests/Providers/Rng/IRNGProviderTest.php | 13 ++++++++++++ tests/Providers/Rng/TestRNGProvider.php | 24 +++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 tests/Providers/Rng/TestRNGProvider.php 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 @@ +