summaryrefslogtreecommitdiff
path: root/vendor/firebase/php-jwt/tests
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/firebase/php-jwt/tests')
-rw-r--r--vendor/firebase/php-jwt/tests/JWTTest.php231
-rw-r--r--vendor/firebase/php-jwt/tests/autoload.php.dist17
-rw-r--r--vendor/firebase/php-jwt/tests/bootstrap.php7
3 files changed, 255 insertions, 0 deletions
diff --git a/vendor/firebase/php-jwt/tests/JWTTest.php b/vendor/firebase/php-jwt/tests/JWTTest.php
new file mode 100644
index 00000000..0605e4ca
--- /dev/null
+++ b/vendor/firebase/php-jwt/tests/JWTTest.php
@@ -0,0 +1,231 @@
+<?php
+
+class JWTTest extends PHPUnit_Framework_TestCase
+{
+ public function testEncodeDecode()
+ {
+ $msg = JWT::encode('abc', 'my_key');
+ $this->assertEquals(JWT::decode($msg, 'my_key', array('HS256')), 'abc');
+ }
+
+ public function testDecodeFromPython()
+ {
+ $msg = 'eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.Iio6aHR0cDovL2FwcGxpY2F0aW9uL2NsaWNreT9ibGFoPTEuMjMmZi5vbz00NTYgQUMwMDAgMTIzIg.E_U8X2YpMT5K1cEiT_3-IvBYfrdIFIeVYeOqre_Z5Cg';
+ $this->assertEquals(
+ JWT::decode($msg, 'my_key', array('HS256')),
+ '*:http://application/clicky?blah=1.23&f.oo=456 AC000 123'
+ );
+ }
+
+ public function testUrlSafeCharacters()
+ {
+ $encoded = JWT::encode('f?', 'a');
+ $this->assertEquals('f?', JWT::decode($encoded, 'a', array('HS256')));
+ }
+
+ public function testMalformedUtf8StringsFail()
+ {
+ $this->setExpectedException('DomainException');
+ JWT::encode(pack('c', 128), 'a');
+ }
+
+ public function testMalformedJsonThrowsException()
+ {
+ $this->setExpectedException('DomainException');
+ JWT::jsonDecode('this is not valid JSON string');
+ }
+
+ public function testExpiredToken()
+ {
+ $this->setExpectedException('ExpiredException');
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() - 20); // time in the past
+ $encoded = JWT::encode($payload, 'my_key');
+ JWT::decode($encoded, 'my_key', array('HS256'));
+ }
+
+ public function testBeforeValidTokenWithNbf()
+ {
+ $this->setExpectedException('BeforeValidException');
+ $payload = array(
+ "message" => "abc",
+ "nbf" => time() + 20); // time in the future
+ $encoded = JWT::encode($payload, 'my_key');
+ JWT::decode($encoded, 'my_key', array('HS256'));
+ }
+
+ public function testBeforeValidTokenWithIat()
+ {
+ $this->setExpectedException('BeforeValidException');
+ $payload = array(
+ "message" => "abc",
+ "iat" => time() + 20); // time in the future
+ $encoded = JWT::encode($payload, 'my_key');
+ JWT::decode($encoded, 'my_key', array('HS256'));
+ }
+
+ public function testValidToken()
+ {
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() + JWT::$leeway + 20); // time in the future
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ }
+
+ public function testValidTokenWithLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() - 20); // time in the past
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ JWT::$leeway = 0;
+ }
+
+ public function testExpiredTokenWithLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() - 70); // time far in the past
+ $this->setExpectedException('ExpiredException');
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ JWT::$leeway = 0;
+ }
+
+ public function testValidTokenWithList()
+ {
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() + 20); // time in the future
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256', 'HS512'));
+ $this->assertEquals($decoded->message, 'abc');
+ }
+
+ public function testValidTokenWithNbf()
+ {
+ $payload = array(
+ "message" => "abc",
+ "iat" => time(),
+ "exp" => time() + 20, // time in the future
+ "nbf" => time() - 20);
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ }
+
+ public function testValidTokenWithNbfLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "nbf" => time() + 20); // not before in near (leeway) future
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ JWT::$leeway = 0;
+ }
+
+ public function testInvalidTokenWithNbfLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "nbf" => time() + 65); // not before too far in future
+ $encoded = JWT::encode($payload, 'my_key');
+ $this->setExpectedException('BeforeValidException');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ JWT::$leeway = 0;
+ }
+
+ public function testValidTokenWithIatLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "iat" => time() + 20); // issued in near (leeway) future
+ $encoded = JWT::encode($payload, 'my_key');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ $this->assertEquals($decoded->message, 'abc');
+ JWT::$leeway = 0;
+ }
+
+ public function testInvalidTokenWithIatLeeway()
+ {
+ JWT::$leeway = 60;
+ $payload = array(
+ "message" => "abc",
+ "iat" => time() + 65); // issued too far in future
+ $encoded = JWT::encode($payload, 'my_key');
+ $this->setExpectedException('BeforeValidException');
+ $decoded = JWT::decode($encoded, 'my_key', array('HS256'));
+ JWT::$leeway = 0;
+ }
+
+ public function testInvalidToken()
+ {
+ $payload = array(
+ "message" => "abc",
+ "exp" => time() + 20); // time in the future
+ $encoded = JWT::encode($payload, 'my_key');
+ $this->setExpectedException('SignatureInvalidException');
+ $decoded = JWT::decode($encoded, 'my_key2', array('HS256'));
+ }
+
+ public function testRSEncodeDecode()
+ {
+ $privKey = openssl_pkey_new(array('digest_alg' => 'sha256',
+ 'private_key_bits' => 1024,
+ 'private_key_type' => OPENSSL_KEYTYPE_RSA));
+ $msg = JWT::encode('abc', $privKey, 'RS256');
+ $pubKey = openssl_pkey_get_details($privKey);
+ $pubKey = $pubKey['key'];
+ $decoded = JWT::decode($msg, $pubKey, array('RS256'));
+ $this->assertEquals($decoded, 'abc');
+ }
+
+ public function testKIDChooser()
+ {
+ $keys = array('1' => 'my_key', '2' => 'my_key2');
+ $msg = JWT::encode('abc', $keys['1'], 'HS256', '1');
+ $decoded = JWT::decode($msg, $keys, array('HS256'));
+ $this->assertEquals($decoded, 'abc');
+ }
+
+ public function testArrayAccessKIDChooser()
+ {
+ $keys = new ArrayObject(array('1' => 'my_key', '2' => 'my_key2'));
+ $msg = JWT::encode('abc', $keys['1'], 'HS256', '1');
+ $decoded = JWT::decode($msg, $keys, array('HS256'));
+ $this->assertEquals($decoded, 'abc');
+ }
+
+ public function testNoneAlgorithm()
+ {
+ $msg = JWT::encode('abc', 'my_key');
+ $this->setExpectedException('DomainException');
+ JWT::decode($msg, 'my_key', array('none'));
+ }
+
+ public function testIncorrectAlgorithm()
+ {
+ $msg = JWT::encode('abc', 'my_key');
+ $this->setExpectedException('DomainException');
+ JWT::decode($msg, 'my_key', array('RS256'));
+ }
+
+ public function testMissingAlgorithm()
+ {
+ $msg = JWT::encode('abc', 'my_key');
+ $this->setExpectedException('DomainException');
+ JWT::decode($msg, 'my_key');
+ }
+}
diff --git a/vendor/firebase/php-jwt/tests/autoload.php.dist b/vendor/firebase/php-jwt/tests/autoload.php.dist
new file mode 100644
index 00000000..2e4310a0
--- /dev/null
+++ b/vendor/firebase/php-jwt/tests/autoload.php.dist
@@ -0,0 +1,17 @@
+<?php
+
+// if the library is the project, try to use the composer's autoload for the tests
+$composerAutoload = __DIR__ . '/../vendor/autoload.php';
+
+if (is_file($composerAutoload)) {
+ include $composerAutoload;
+} else {
+ die('Unable to find autoload.php file, please use composer to load dependencies:
+
+wget http://getcomposer.org/composer.phar
+php composer.phar install
+
+Visit http://getcomposer.org/ for more information.
+
+');
+}
diff --git a/vendor/firebase/php-jwt/tests/bootstrap.php b/vendor/firebase/php-jwt/tests/bootstrap.php
new file mode 100644
index 00000000..326c2166
--- /dev/null
+++ b/vendor/firebase/php-jwt/tests/bootstrap.php
@@ -0,0 +1,7 @@
+<?php
+
+if (file_exists($file = __DIR__ . '/autoload.php')) {
+ require_once $file;
+} elseif (file_exists($file = __DIR__ . '/autoload.php.dist')) {
+ require_once $file;
+}