diff options
Diffstat (limited to 'vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php')
-rw-r--r-- | vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php b/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php new file mode 100644 index 000000000..136ed611c --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php @@ -0,0 +1,58 @@ +<?php + +use ParagonIE\ConstantTime\Base64UrlSafe; +use ParagonIE\ConstantTime\Binary; + +/** + * Class Base64UrlSafeTest + */ +class Base64UrlSafeTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base64UrlSafe::encode() + * @covers Base64UrlSafe::decode() + * + * @throws Exception + * @throws TypeError + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base64UrlSafe::encode($random); + $this->assertSame( + $random, + Base64UrlSafe::decode($enc) + ); + $this->assertSame( + \strtr(\base64_encode($random), '+/', '-_'), + $enc + ); + + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base64UrlSafe::encodeUnpadded($random) + ); + $this->assertSame( + $random, + Base64UrlSafe::decode($unpadded) + ); + } + } + + $random = \random_bytes(1 << 20); + $enc = Base64UrlSafe::encode($random); + $this->assertTrue(Binary::safeStrlen($enc) > 65536); + $this->assertSame( + $random, + Base64UrlSafe::decode($enc) + ); + $this->assertSame( + \strtr(\base64_encode($random), '+/', '-_'), + $enc + ); + } +} |