You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

134 lines
3.6 KiB

<?php
/**
* This file is part of Lcobucci\JWT, a simple library to handle JWT and JWS
*
* @license http://opensource.org/licenses/BSD-3-Clause BSD-3-Clause
*/
namespace Lcobucci\JWT\Signer;
/**
* @author Luís Otávio Cobucci Oblonczyk <lcobucci@gmail.com>
* @since 0.1.0
*/
class HmacTest extends \PHPUnit_Framework_TestCase
{
/**
* @var Hmac|\PHPUnit_Framework_MockObject_MockObject
*/
protected $signer;
/**
* {@inheritdoc}
*/
protected function setUp()
{
$this->signer = $this->getMockForAbstractClass(Hmac::class);
$this->signer->expects($this->any())
->method('getAlgorithmId')
->willReturn('TEST123');
$this->signer->expects($this->any())
->method('getAlgorithm')
->willReturn('sha256');
}
/**
* @test
*
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::createHash
*/
public function createHashMustReturnAHashAccordingWithTheAlgorithm()
{
$hash = hash_hmac('sha256', 'test', '123', true);
$this->assertEquals($hash, $this->signer->createHash('test', new Key('123')));
return $hash;
}
/**
* @test
*
* @depends createHashMustReturnAHashAccordingWithTheAlgorithm
*
* @uses Lcobucci\JWT\Signer\Hmac::createHash
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::doVerify
*/
public function doVerifyShouldReturnTrueWhenExpectedHashWasCreatedWithSameInformation($expected)
{
$this->assertTrue($this->signer->doVerify($expected, 'test', new Key('123')));
}
/**
* @test
*
* @depends createHashMustReturnAHashAccordingWithTheAlgorithm
*
* @uses Lcobucci\JWT\Signer\Hmac::createHash
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::doVerify
*/
public function doVerifyShouldReturnFalseWhenExpectedHashWasNotCreatedWithSameInformation($expected)
{
$this->assertFalse($this->signer->doVerify($expected, 'test', new Key('1234')));
}
/**
* @test
*
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::doVerify
*/
public function doVerifyShouldReturnFalseWhenExpectedHashIsNotString()
{
$this->assertFalse($this->signer->doVerify(false, 'test', new Key('1234')));
}
/**
* @test
*
* @covers Lcobucci\JWT\Signer\Hmac::hashEquals
*/
public function hashEqualsShouldReturnFalseWhenExpectedHashHasDifferentLengthThanGenerated()
{
$this->assertFalse($this->signer->hashEquals('123', '1234'));
}
/**
* @test
*
* @depends createHashMustReturnAHashAccordingWithTheAlgorithm
*
* @uses Lcobucci\JWT\Signer\Hmac::createHash
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::hashEquals
*/
public function hashEqualsShouldReturnFalseWhenExpectedHashIsDifferentThanGenerated($expected)
{
$this->assertFalse($this->signer->hashEquals($expected, $this->signer->createHash('test', new Key('1234'))));
}
/**
* @test
*
* @depends createHashMustReturnAHashAccordingWithTheAlgorithm
*
* @uses Lcobucci\JWT\Signer\Hmac::createHash
* @uses Lcobucci\JWT\Signer\Key
*
* @covers Lcobucci\JWT\Signer\Hmac::hashEquals
*/
public function hashEqualsShouldReturnTrueWhenExpectedHashIsEqualsThanGenerated($expected)
{
$this->assertTrue($this->signer->hashEquals($expected, $this->signer->createHash('test', new Key('123'))));
}
}