326 lines
13 KiB
PHP
326 lines
13 KiB
PHP
<?php
|
|
|
|
namespace OAuthTest\Unit\OAuth1\Signature;
|
|
|
|
use OAuth\OAuth1\Signature\Signature;
|
|
|
|
class SignatureTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
*/
|
|
public function testConstructCorrectInterface()
|
|
{
|
|
$signature = new Signature($this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'));
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth1\\Signature\\SignatureInterface', $signature);
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
*/
|
|
public function testSetHashingAlgorithm()
|
|
{
|
|
$signature = new Signature($this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'));
|
|
|
|
$this->assertNull($signature->setHashingAlgorithm('foo'));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
*/
|
|
public function testSetTokenSecret()
|
|
{
|
|
$signature = new Signature($this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'));
|
|
|
|
$this->assertNull($signature->setTokenSecret('foo'));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureBareUri()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
$signature->setTokenSecret('foo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue(''));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue(''));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/foo'));
|
|
|
|
$this->assertSame('uoCpiII/Lg/cPiF0XrU2pj4eGFQ=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureWithQueryString()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
$signature->setTokenSecret('foo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue(''));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/foo'));
|
|
|
|
$this->assertSame('LxtD+WjJBRppIUvEI79iQ7I0hSo=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureWithAuthority()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
$signature->setTokenSecret('foo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue('peehaa:pass'));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/foo'));
|
|
|
|
$this->assertSame('MHvkRndIntLrxiPkjkiCNsMEqv4=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureWithBarePathNonExplicitTrailingHostSlash()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
$signature->setTokenSecret('foo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue('peehaa:pass'));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/'));
|
|
$uri->expects($this->any())
|
|
->method('hasExplicitTrailingHostSlash')
|
|
->will($this->returnValue(false));
|
|
|
|
$this->assertSame('iFELDoiI5Oj9ixB3kHzoPvBpq0w=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureWithBarePathWithExplicitTrailingHostSlash()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
$signature->setTokenSecret('foo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue('peehaa:pass'));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/'));
|
|
$uri->expects($this->any())
|
|
->method('hasExplicitTrailingHostSlash')
|
|
->will($this->returnValue(true));
|
|
|
|
$this->assertSame('IEhUsArSTLvbQ3QYr0zzn+Rxpjg=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureNoTokenSecretSet()
|
|
{
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('HMAC-SHA1');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue('peehaa:pass'));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/'));
|
|
$uri->expects($this->any())
|
|
->method('hasExplicitTrailingHostSlash')
|
|
->will($this->returnValue(true));
|
|
|
|
$this->assertSame('YMHF7FYmLq7wzGnnHWYtd1VoBBE=', $signature->getSignature($uri, array('pee' => 'haa')));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth1\Signature\Signature::__construct
|
|
* @covers OAuth\OAuth1\Signature\Signature::setHashingAlgorithm
|
|
* @covers OAuth\OAuth1\Signature\Signature::setTokenSecret
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSignature
|
|
* @covers OAuth\OAuth1\Signature\Signature::buildSignatureDataString
|
|
* @covers OAuth\OAuth1\Signature\Signature::hash
|
|
* @covers OAuth\OAuth1\Signature\Signature::getSigningKey
|
|
*/
|
|
public function testGetSignatureThrowsExceptionOnUnsupportedAlgo()
|
|
{
|
|
$this->setExpectedException('\\OAuth\\OAuth1\\Signature\\Exception\\UnsupportedHashAlgorithmException');
|
|
|
|
$credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
|
|
$credentials->expects($this->any())
|
|
->method('getConsumerSecret')
|
|
->will($this->returnValue('foo'));
|
|
|
|
|
|
$signature = new Signature($credentials);
|
|
|
|
$signature->setHashingAlgorithm('UnsupportedAlgo');
|
|
|
|
$uri = $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface');
|
|
$uri->expects($this->any())
|
|
->method('getQuery')
|
|
->will($this->returnValue('param1=value1'));
|
|
$uri->expects($this->any())
|
|
->method('getScheme')
|
|
->will($this->returnValue('http'));
|
|
$uri->expects($this->any())
|
|
->method('getRawAuthority')
|
|
->will($this->returnValue('peehaa:pass'));
|
|
$uri->expects($this->any())
|
|
->method('getPath')
|
|
->will($this->returnValue('/'));
|
|
$uri->expects($this->any())
|
|
->method('hasExplicitTrailingHostSlash')
|
|
->will($this->returnValue(true));
|
|
|
|
$signature->getSignature($uri, array('pee' => 'haa'));
|
|
}
|
|
}
|