| 
<?phpnamespace ParagonIE\Paseto\Tests;
 
 use ParagonIE\ConstantTime\Hex;
 use ParagonIE\Paseto\Keys\AsymmetricPublicKey;
 use ParagonIE\Paseto\Keys\SymmetricKey;
 use ParagonIE\Paseto\Parser;
 use ParagonIE\Paseto\Protocol\Version2;
 use ParagonIE\Paseto\ProtocolCollection;
 use PHPUnit\Framework\TestCase;
 
 /**
 * Class ReadmeTest
 *
 * Unit tests to verify the examples given in the README.
 *
 * @package ParagonIE\Paseto\Tests
 */
 class ReadmeTest extends TestCase
 {
 /**
 * @throws \Error
 * @throws \Exception
 * @throws \ParagonIE\Paseto\Exception\InvalidVersionException
 * @throws \TypeError
 */
 public function testLocal()
 {
 $version2 = new Version2();
 $token = 'v2.local.QAxIpVe-ECVNI1z4xQbm_qQYomyT3h8FtV8bxkz8pBJWkT8f7HtlOpbroPDEZUKop_vaglyp76CzYy375cHmKCW8e1CCkV0Lflu4GTDyXMqQdpZMM1E6OaoQW27gaRSvWBrR3IgbFIa0AkuUFw.UGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2Vz';
 $key = new SymmetricKey(Hex::decode('707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f'), $version2);
 
 $parser = Parser::getLocal($key, ProtocolCollection::v2());
 $object = $parser->parse($token);
 $this->assertEquals(
 new \DateTime('2039-01-01T00:00:00+00:00'),
 $object->getExpiration()
 );
 
 $this->assertSame(
 'this is a signed message',
 $object->get('data')
 );
 }
 
 /**
 * @throws \Exception
 * @throws \TypeError
 */
 public function testPublic()
 {
 $version2 = new Version2();
 $token = 'v2.public.eyJleHAiOiIyMDM5LTAxLTAxVDAwOjAwOjAwKzAwOjAwIiwiZGF0YSI6InRoaXMgaXMgYSBzaWduZWQgbWVzc2FnZSJ91gC7-jCWsN3mv4uJaZxZp0btLJgcyVwL-svJD7f4IHyGteKe3HTLjHYTGHI1MtCqJ-ESDLNoE7otkIzamFskCA';
 
 /*
 $secretKey = new ParagonIE\Paseto\Keys\AsymmetricSecretKey(
 Hex::decode(
 'f03171650aad288cc2dd6343f95feefff3c8f25e36629d5753965c856ab1a070' .
 '11324397f535562178d53ff538e49d5a162242970556b4edd950c87c7d86648a'
 ),
 $version2
 );
 */
 $publicKey = new AsymmetricPublicKey(
 Hex::decode('11324397f535562178d53ff538e49d5a162242970556b4edd950c87c7d86648a'),
 $version2
 );
 
 $parser = Parser::getPublic($publicKey, ProtocolCollection::v2());
 $object = $parser->parse($token);
 $this->assertEquals(
 new \DateTime('2039-01-01T00:00:00+00:00'),
 $object->getExpiration()
 );
 
 $this->assertSame(
 'this is a signed message',
 $object->get('data')
 );
 }
 }
 
 |