CSRNGProviderTest.php 770 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace Tests\Providers\Rng;
  3. use PHPUnit\Framework\TestCase;
  4. use Tests\MightNotMakeAssertions;
  5. use RobThree\Auth\Providers\Rng\CSRNGProvider;
  6. class CSRNGProviderTest extends TestCase
  7. {
  8. use NeedsRngLengths, MightNotMakeAssertions;
  9. /**
  10. * @requires function random_bytes
  11. *
  12. * @return void
  13. */
  14. public function testCSRNGProvidersReturnExpectedNumberOfBytes()
  15. {
  16. if (function_exists('random_bytes')) {
  17. $rng = new CSRNGProvider();
  18. foreach ($this->rngTestLengths as $l) {
  19. $this->assertEquals($l, strlen($rng->getRandomBytes($l)));
  20. }
  21. $this->assertTrue($rng->isCryptographicallySecure());
  22. } else {
  23. $this->noAssertionsMade();
  24. }
  25. }
  26. }