Update Tests to supports namespaces

This commit is contained in:
2021-05-07 16:55:38 +02:00
parent ccf0f47c7f
commit 55530b055c
49 changed files with 82 additions and 64 deletions

179
Tests/JwtTest.php Normal file
View File

@@ -0,0 +1,179 @@
<?php
/** DomFramework - Tests
* @package domframework
* @author Dominique Fournier <dominique@fournier38.fr>
* @license BSD
*/
namespace Domframework\Tests;
/** Test the jwt.php file */
class jwtTest extends \PHPUnit_Framework_TestCase
{
public function test_createKey_1 ()
{
$jwt = new jwt ();
$res = $jwt->createKey ();
$this->assertSame (40, strlen ($res));
}
public function test_sign_1 ()
{
$jwt = new jwt ();
$res = $this->invokeMethod ($jwt, "sign", "TEXT TO SIGN", "KEY TO USE",
"HS384");
$this->assertSame (
"cQB+yNVvIER+Nw53MZfU/PGPAJlkKUnjMikmXAwVB9tcaINQH5a88LCDi0PmI5mZ",
base64_encode ($res));
}
public function test_sign_2 ()
{
$jwt = new jwt ();
$res = $this->invokeMethod ($jwt, "sign", "text to sign", "KEY TO USE",
"HS384");
$this->assertSame (
"FLSkslsUGIpkP3xsJx5ephnCtH7K4jZSNxRxxCn3m7fsPK/MMfEIVr+h3heap80x",
base64_encode ($res));
}
public function test_sign_3 ()
{
$jwt = new jwt ();
$res = $this->invokeMethod ($jwt, "sign", "text to sign", "key to use",
"HS384");
$this->assertSame (
"lBLlXb5Xo3z9zoEuO0obZdhqGNUKr8DaEsL991TpSPWIdB2067ckR+AJ1FW6in2B",
base64_encode ($res));
}
public function test_encode_1 ()
{
$jwt = new jwt ();
$res = $jwt->encode (array ("payload" => "value"), "key to use", "HS384");
$this->assertSame (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"0ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge", $res);
}
public function test_decode_1 ()
{
$jwt = new jwt ();
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"0ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge",
"key to use");
$this->assertSame ((object)array ("payload" => "value"), $res);
}
public function test_decode_2 ()
{
$GLOBALS["hash_equals"] = false;
$jwt = new jwt ();
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"0ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge",
"key to use");
$this->assertSame ((object)array ("payload" => "value"), $res);
}
public function test_decode_3 ()
{
$jwt = new jwt ();
$this->expectException ("Exception", "JWT with Empty algorithm");
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUXXXXXJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"0ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge",
"key to use");
}
public function test_decode_4 ()
{
$jwt = new jwt ();
$this->expectException ("Exception", "JWT Payload not readable");
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoiXXXXXXXXfQ.".
"0ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge",
"key to use");
}
public function test_decode_5 ()
{
$jwt = new jwt ();
$this->expectException ("Exception",
"JWT Signature verification failed");
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"1ByHaODQQjYEvmgU2u5LI034RRMc7CKJQ752ys19Fqj7QiTJO7-trerYKCxCyuge",
"key to use");
}
public function test_decode_6 ()
{
$jwt = new jwt ();
$this->expectException ("Exception",
"JWT Signature not readable");
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ.".
"0",
"key to use");
}
public function test_decode_7 ()
{
$jwt = new jwt ();
$this->expectException ("Exception",
"Malformed JWT Token");
$res = $jwt->decode (
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.".
"eyJwYXlsb2FkIjoidmFsdWUifQ",
"key to use");
}
///////////////////////////////
// ENCRYPT THE PAYLOAD //
///////////////////////////////
/** Check the length of the otken with cipher
*/
public function testEncrypt1 ()
{
$jwt = new jwt ();
$key = $jwt->createKey ();
$res = $jwt->encode (
["email" => "toto@example.com", "password" => "ToTo"],
$key, "HS256", "123456789012345678901234");
$this->assertSame (strlen ($res), 156);
}
/** Check if the encrypt/decrypt process return the same result
*/
public function testEncrypyt2 ()
{
$jwt = new jwt ();
$key = $jwt->createKey ();
$payload = (object)["email" => "toto@example.com", "password" => "ToTo"];
$token = $jwt->encode ($payload, $key, "HS256", "123456789012345678901234");
$res = $jwt->decode ($token, $key, null, "123456789012345678901234");
$this->assertSame ($res, $payload);
}
/** Check if the encrypted part is well unreadable
*/
public function testEncrypt3 ()
{
$jwt = new jwt ();
$key = $jwt->createKey ();
$payload = (object)["email" => "toto@example.com", "password" => "ToTo"];
$token = $jwt->encode ($payload, $key, "HS256", "123456789012345678901234");
list ($header, $payload, $signature) = explode (".", $token);
$res = strpos (base64_decode ($payload), "email");
$this->assertSame ($res, false);
}
}