IRNGProviderTest.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. namespace Tests\Providers\Rng;
  3. use PHPUnit\Framework\TestCase;
  4. use RobThree\Auth\TwoFactorAuth;
  5. use RobThree\Auth\TwoFactorAuthException;
  6. class IRNGProviderTest extends TestCase
  7. {
  8. /**
  9. * @return void
  10. */
  11. public function testCreateSecretThrowsOnInsecureRNGProvider()
  12. {
  13. $rng = new TestRNGProvider();
  14. $tfa = new TwoFactorAuth('Test', 6, 30, 'sha1', null, $rng);
  15. $this->expectException(TwoFactorAuthException::class);
  16. $tfa->createSecret();
  17. }
  18. /**
  19. * @return void
  20. */
  21. public function testCreateSecretOverrideSecureDoesNotThrowOnInsecureRNG()
  22. {
  23. $rng = new TestRNGProvider();
  24. $tfa = new TwoFactorAuth('Test', 6, 30, 'sha1', null, $rng);
  25. $this->assertEquals('ABCDEFGHIJKLMNOP', $tfa->createSecret(80, false));
  26. }
  27. /**
  28. * @return void
  29. */
  30. public function testCreateSecretDoesNotThrowOnSecureRNGProvider()
  31. {
  32. $rng = new TestRNGProvider(true);
  33. $tfa = new TwoFactorAuth('Test', 6, 30, 'sha1', null, $rng);
  34. $this->assertEquals('ABCDEFGHIJKLMNOP', $tfa->createSecret());
  35. }
  36. /**
  37. * @return void
  38. */
  39. public function testCreateSecretGeneratesDesiredAmountOfEntropy()
  40. {
  41. $rng = new TestRNGProvider(true);
  42. $tfa = new TwoFactorAuth('Test', 6, 30, 'sha1', null, $rng);
  43. $this->assertEquals('A', $tfa->createSecret(5));
  44. $this->assertEquals('AB', $tfa->createSecret(6));
  45. $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ', $tfa->createSecret(128));
  46. $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(160));
  47. $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', $tfa->createSecret(320));
  48. $this->assertEquals('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567ABCDEFGHIJKLMNOPQRSTUVWXYZ234567A', $tfa->createSecret(321));
  49. }
  50. }