196 lines
7.2 KiB
PHP
196 lines
7.2 KiB
PHP
<?php
|
|
|
|
namespace OAuthTest\Unit\OAuth2\Service;
|
|
|
|
use OAuth\OAuth2\Service\Google;
|
|
use OAuth\Common\Token\TokenInterface;
|
|
|
|
class GoogleTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
*/
|
|
public function testConstructCorrectInterfaceWithoutCustomUri()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\ServiceInterface', $service);
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
*/
|
|
public function testConstructCorrectInstanceWithoutCustomUri()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
*/
|
|
public function testConstructCorrectInstanceWithCustomUri()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
|
|
array(),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface')
|
|
);
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service);
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::getAuthorizationEndpoint
|
|
*/
|
|
public function testGetAuthorizationEndpoint()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertSame(
|
|
'https://accounts.google.com/o/oauth2/auth?access_type=online',
|
|
$service->getAuthorizationEndpoint()->getAbsoluteUri()
|
|
);
|
|
|
|
// Verify that 'offine' works
|
|
$service->setAccessType('offline');
|
|
$this->assertSame(
|
|
'https://accounts.google.com/o/oauth2/auth?access_type=offline',
|
|
$service->getAuthorizationEndpoint()->getAbsoluteUri()
|
|
);
|
|
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::getAuthorizationEndpoint
|
|
*/
|
|
public function testGetAuthorizationEndpointException()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->setExpectedException('OAuth\OAuth2\Service\Exception\InvalidAccessTypeException');
|
|
|
|
try {
|
|
$service->setAccessType('invalid');
|
|
} catch (InvalidAccessTypeException $e) {
|
|
return;
|
|
}
|
|
$this->fail('Expected InvalidAccessTypeException not thrown');
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::getAccessTokenEndpoint
|
|
*/
|
|
public function testGetAccessTokenEndpoint()
|
|
{
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'),
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertSame(
|
|
'https://accounts.google.com/o/oauth2/token',
|
|
$service->getAccessTokenEndpoint()->getAbsoluteUri()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse
|
|
*/
|
|
public function testParseAccessTokenResponseThrowsExceptionOnNulledResponse()
|
|
{
|
|
$client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
|
|
$client->expects($this->once())->method('retrieveResponse')->will($this->returnValue(null));
|
|
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$client,
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
|
|
|
|
$service->requestAccessToken('foo');
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse
|
|
*/
|
|
public function testParseAccessTokenResponseThrowsExceptionOnError()
|
|
{
|
|
$client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
|
|
$client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('error=some_error'));
|
|
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$client,
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException');
|
|
|
|
$service->requestAccessToken('foo');
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse
|
|
*/
|
|
public function testParseAccessTokenResponseValidWithoutRefreshToken()
|
|
{
|
|
$client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
|
|
$client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('{"access_token":"foo","expires_in":"bar"}'));
|
|
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$client,
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
|
|
}
|
|
|
|
/**
|
|
* @covers OAuth\OAuth2\Service\Google::__construct
|
|
* @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse
|
|
*/
|
|
public function testParseAccessTokenResponseValidWithRefreshToken()
|
|
{
|
|
$client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
|
|
$client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('{"access_token":"foo","expires_in":"bar","refresh_token":"baz"}'));
|
|
|
|
$service = new Google(
|
|
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
|
|
$client,
|
|
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
|
|
);
|
|
|
|
$this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
|
|
}
|
|
}
|