/**
* @test
*
* @covers \Lcobucci\JWT\Configuration
* @covers \Lcobucci\JWT\Builder
* @covers \Lcobucci\JWT\Token
* @covers \Lcobucci\JWT\Signature
* @covers \Lcobucci\JWT\Claim\Factory
* @covers \Lcobucci\JWT\Claim\Basic
* @covers \Lcobucci\JWT\Signer\Key
* @covers \Lcobucci\JWT\Signer\BaseSigner
* @covers \Lcobucci\JWT\Signer\Hmac
* @covers \Lcobucci\JWT\Signer\Hmac\Sha256
*/
public function builderCanGenerateAToken()
{
$user = ['name' => 'testing', 'email' => '*****@*****.**'];
$builder = $this->config->createBuilder();
$token = $builder->identifiedBy('1')->canOnlyBeUsedBy('http://client.abc.com')->issuedBy('http://api.abc.com')->with('user', $user)->withHeader('jki', '1234')->sign($this->config->getSigner(), new Key('testing'))->getToken();
self::assertAttributeInstanceOf(Signature::class, 'signature', $token);
self::assertEquals('1234', $token->getHeader('jki'));
self::assertEquals(['http://client.abc.com'], $token->getClaim('aud'));
self::assertEquals('http://api.abc.com', $token->getClaim('iss'));
self::assertEquals($user, $token->getClaim('user'));
return $token;
}