Files
Kanboard-Prod/vendor/lusitanian/oauth/tests/Unit/ServiceFactoryTest.php
2014-11-06 06:41:47 -05:00

312 lines
11 KiB
PHP

<?php
/**
* @category OAuth
* @package Tests
* @author David Desberg <david@daviddesberg.com>
* @author Chris Heng <bigblah@gmail.com>
* @author Pieter Hordijk <info@pieterhordijk.com>
* @copyright Copyright (c) 2013 The authors
* @license http://www.opensource.org/licenses/mit-license.html MIT License
*/
namespace OAuth\Unit;
use OAuth\ServiceFactory;
class ServiceFactoryTest extends \PHPUnit_Framework_TestCase
{
/**
* @covers OAuth\ServiceFactory::setHttpClient
*/
public function testSetHttpClient()
{
$factory = new ServiceFactory();
$this->assertInstanceOf(
'\\OAuth\\ServiceFactory',
$factory->setHttpClient($this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'))
);
}
/**
* @covers OAuth\ServiceFactory::registerService
*/
public function testRegisterServiceThrowsExceptionNonExistentClass()
{
$this->setExpectedException('\\OAuth\Common\Exception\Exception');
$factory = new ServiceFactory();
$factory->registerService('foo', 'bar');
}
/**
* @covers OAuth\ServiceFactory::registerService
*/
public function testRegisterServiceThrowsExceptionWithClassIncorrectImplementation()
{
$this->setExpectedException('\\OAuth\Common\Exception\Exception');
$factory = new ServiceFactory();
$factory->registerService('foo', 'OAuth\\ServiceFactory');
}
/**
* @covers OAuth\ServiceFactory::registerService
*/
public function testRegisterServiceSuccessOAuth1()
{
$factory = new ServiceFactory();
$this->assertInstanceOf(
'\\OAuth\\ServiceFactory',
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake')
);
}
/**
* @covers OAuth\ServiceFactory::registerService
*/
public function testRegisterServiceSuccessOAuth2()
{
$factory = new ServiceFactory();
$this->assertInstanceOf(
'\\OAuth\\ServiceFactory',
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake')
);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV1Service
*/
public function testCreateServiceOAuth1NonRegistered()
{
$factory = new ServiceFactory();
$service = $factory->createService(
'twitter',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\\OAuth1\\Service\\Twitter', $service);
}
/**
* @covers OAuth\ServiceFactory::registerService
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV1Service
*/
public function testCreateServiceOAuth1Registered()
{
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\OAuth1\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::registerService
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV1Service
*/
public function testCreateServiceOAuth1RegisteredAndNonRegisteredSameName()
{
$factory = new ServiceFactory();
$factory->registerService('twitter', '\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake');
$service = $factory->createService(
'twitter',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\OAuth1\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServiceOAuth2NonRegistered()
{
$factory = new ServiceFactory();
$service = $factory->createService(
'facebook',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\Facebook', $service);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServiceOAuth2Registered()
{
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\OAuth2\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServiceOAuth2RegisteredAndNonRegisteredSameName()
{
$factory = new ServiceFactory();
$factory->registerService('facebook', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake');
$service = $factory->createService(
'facebook',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\OAuth2\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::registerService
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV1Service
*/
public function testCreateServiceThrowsExceptionOnPassingScopesToV1Service()
{
$this->setExpectedException('\\OAuth\Common\Exception\Exception');
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
array('bar')
);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
*/
public function testCreateServiceNonExistentService()
{
$factory = new ServiceFactory();
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertNull($service);
}
/**
* @covers OAuth\ServiceFactory::registerService
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServicePrefersOauth2()
{
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth1\\Service\\Fake');
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface')
);
$this->assertInstanceOf('\\OAuth\OAuth2\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServiceOAuth2RegisteredWithClassConstantsAsScope()
{
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
array('FOO')
);
$this->assertInstanceOf('\\OAuth\OAuth2\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake', $service);
}
/**
* @covers OAuth\ServiceFactory::createService
* @covers OAuth\ServiceFactory::getFullyQualifiedServiceName
* @covers OAuth\ServiceFactory::buildV2Service
* @covers OAuth\ServiceFactory::resolveScopes
*/
public function testCreateServiceOAuth2RegisteredWithCustomScope()
{
$factory = new ServiceFactory();
$factory->registerService('foo', '\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake');
$service = $factory->createService(
'foo',
$this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'),
$this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'),
array('custom')
);
$this->assertInstanceOf('\\OAuth\OAuth2\Service\\ServiceInterface', $service);
$this->assertInstanceOf('\\OAuthTest\\Mocks\\OAuth2\\Service\\Fake', $service);
}
}