first commit
This commit is contained in:
commit
d0e185820a
2710 files changed
+465112
No files matched your search
+280
@@ -0,0 +1,280 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
use ReflectionClass;
|
||||
use SocialConnect\Common\Http\Client\ClientInterface;
|
||||
use SocialConnect\OAuth2\AccessToken;
|
||||
use SocialConnect\Provider\Consumer;
|
||||
use SocialConnect\Provider\Session\SessionInterface;
|
||||
use Test\TestCase;
|
||||
|
||||
abstract class AbstractProviderTestCase extends TestCase
|
||||
{
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
abstract protected function getProviderClassName();
|
||||
|
||||
/**
|
||||
* @param mixed $responseData
|
||||
* @param int $responseCode
|
||||
* @param bool $mockFromRequest
|
||||
* @return \PHPUnit_Framework_MockObject_MockObject
|
||||
*/
|
||||
protected function mockClientResponse($responseData, $responseCode = 200, $mockFromRequest = false)
|
||||
{
|
||||
$mockedHttpClient = $this->getMockBuilder(\SocialConnect\Common\Http\Client\Curl::class)
|
||||
->getMock();
|
||||
|
||||
$response = new \SocialConnect\Common\Http\Response(
|
||||
$responseCode,
|
||||
$responseData,
|
||||
[]
|
||||
);
|
||||
|
||||
if ($mockFromRequest) {
|
||||
$mockedHttpClient->expects($this->once())
|
||||
->method('fromRequest')
|
||||
->willReturn($response);
|
||||
} else {
|
||||
$mockedHttpClient->expects($this->once())
|
||||
->method('request')
|
||||
->willReturn($response);
|
||||
}
|
||||
|
||||
return $mockedHttpClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $object
|
||||
* @param string $name
|
||||
* @param array $params
|
||||
* @return mixed
|
||||
*/
|
||||
protected static function callProtectedMethod($object, $name, array $params = [])
|
||||
{
|
||||
$class = new ReflectionClass($object);
|
||||
|
||||
$method = $class->getMethod($name);
|
||||
$method->setAccessible(true);
|
||||
|
||||
return $method->invokeArgs($object, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ClientInterface|null $httpClient
|
||||
* @return \SocialConnect\OAuth2\AbstractProvider
|
||||
*/
|
||||
protected function getProvider(ClientInterface $httpClient = null, SessionInterface $session = null)
|
||||
{
|
||||
if (!$httpClient) {
|
||||
$httpClient = $this->getMockBuilder(\SocialConnect\Common\Http\Client\Curl::class)
|
||||
->disableOriginalConstructor()
|
||||
->disableProxyingToOriginalMethods()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
if (!$session) {
|
||||
$session = $this->getMockBuilder(\SocialConnect\Provider\Session\Session::class)
|
||||
->disableOriginalConstructor()
|
||||
->disableProxyingToOriginalMethods()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
$className = $this->getProviderClassName();
|
||||
|
||||
return new $className(
|
||||
$httpClient,
|
||||
$session,
|
||||
new Consumer(
|
||||
'unknown',
|
||||
'unkwown'
|
||||
),
|
||||
[
|
||||
'redirectUri' => 'http://localhost:8000/'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
* @expectedExceptionMessage Parameter $code must be a string
|
||||
*/
|
||||
public function testGetAccessTokenFail()
|
||||
{
|
||||
$this->getProvider()->getAccessToken(null);
|
||||
}
|
||||
|
||||
public function testGetBaseUriReturnString()
|
||||
{
|
||||
parent::assertInternalType('string', $this->getProvider()->getBaseUri());
|
||||
}
|
||||
|
||||
public function testGetAuthorizeUriReturnString()
|
||||
{
|
||||
parent::assertInternalType('string', $this->getProvider()->getAuthorizeUri());
|
||||
}
|
||||
|
||||
public function testGetRequestTokenUriReturnString()
|
||||
{
|
||||
parent::assertInternalType('string', $this->getProvider()->getRequestTokenUri());
|
||||
}
|
||||
|
||||
public function testGetNameReturnString()
|
||||
{
|
||||
parent::assertInternalType('string', $this->getProvider()->getName());
|
||||
}
|
||||
|
||||
public function testMakeAuthUrl()
|
||||
{
|
||||
$provider = $this->getProvider();
|
||||
|
||||
$authUrl = $provider->makeAuthUrl();
|
||||
parent::assertInternalType('string', $authUrl);
|
||||
|
||||
/**
|
||||
* Auth url must be started from getAuthorizeUri
|
||||
*/
|
||||
parent::assertSame(
|
||||
0,
|
||||
strpos($authUrl, $provider->getAuthorizeUri())
|
||||
);
|
||||
|
||||
$query = parse_url($authUrl, PHP_URL_QUERY);
|
||||
parent::assertInternalType('string', $query);
|
||||
|
||||
parse_str($query, $queryParameters);
|
||||
parent::assertInternalType('array', $queryParameters);
|
||||
|
||||
parent::assertArrayHasKey('client_id', $queryParameters);
|
||||
parent::assertArrayHasKey('redirect_uri', $queryParameters);
|
||||
parent::assertArrayHasKey('response_type', $queryParameters);
|
||||
parent::assertArrayHasKey('state', $queryParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidResponse
|
||||
* @expectedExceptionMessage API response with error code
|
||||
*/
|
||||
public function testGetAccessTokenResponseInternalServerErrorFail()
|
||||
{
|
||||
$this->getProvider(
|
||||
$this->mockClientResponse(
|
||||
null,
|
||||
500,
|
||||
true
|
||||
)
|
||||
)->getAccessToken('XXXXXXXXXXXX');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidResponse
|
||||
* @expectedExceptionMessage API response with error code
|
||||
*/
|
||||
public function testGetIdentityInternalServerError()
|
||||
{
|
||||
$mockedHttpClient = $this->mockClientResponse(
|
||||
[],
|
||||
500
|
||||
);
|
||||
|
||||
$this->getProvider($mockedHttpClient)->getIdentity(
|
||||
new AccessToken(
|
||||
[
|
||||
'access_token' => '123456789'
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidResponse
|
||||
* @expectedExceptionMessage API response is not a valid JSON object
|
||||
*/
|
||||
public function testGetIdentityNotValidJSON()
|
||||
{
|
||||
$mockedHttpClient = $this->mockClientResponse(
|
||||
'NOT VALID JSON',
|
||||
200
|
||||
);
|
||||
|
||||
$this->getProvider($mockedHttpClient)->getIdentity(
|
||||
new AccessToken(
|
||||
[
|
||||
'access_token' => '123456789'
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidAccessToken
|
||||
*/
|
||||
public function testParseTokenNotToken()
|
||||
{
|
||||
$this->getProvider()->parseToken(
|
||||
json_encode([])
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidAccessToken
|
||||
*/
|
||||
public function testParseTokenNotValidJSON()
|
||||
{
|
||||
$this->getProvider()->parseToken(
|
||||
'lelelelel'
|
||||
);
|
||||
}
|
||||
|
||||
public function testParseTokenSuccess()
|
||||
{
|
||||
$expectedToken = 'XXXXXXXX';
|
||||
$expectedUserId = 123456;
|
||||
|
||||
$accessToken = $this->getProvider()->parseToken(
|
||||
json_encode(
|
||||
[
|
||||
'access_token' => $expectedToken,
|
||||
'user_id' => $expectedUserId
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(AccessToken::class, $accessToken);
|
||||
parent::assertSame($expectedToken, $accessToken->getToken());
|
||||
parent::assertSame($expectedUserId, $accessToken->getUserId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\OAuth2\Exception\Unauthorized
|
||||
*/
|
||||
public function testAccessDenied()
|
||||
{
|
||||
$sessionMock = $this->getMockBuilder(\SocialConnect\Provider\Session\Session::class)
|
||||
->disableOriginalConstructor()
|
||||
->disableProxyingToOriginalMethods()
|
||||
->getMock();
|
||||
|
||||
$sessionMock->expects($this->once())
|
||||
->method('get')
|
||||
->willReturn(md5(time()));
|
||||
|
||||
$provider = $this->getProvider(null, $sessionMock);
|
||||
|
||||
$provider->getAccessTokenByRequestParameters(['error' => 'access_denied']);
|
||||
}
|
||||
|
||||
public function testGenerateState()
|
||||
{
|
||||
$state = $this->callProtectedMethod($this->getProvider(), 'generateState', []);
|
||||
|
||||
parent::assertInternalType('string', $state);
|
||||
parent::assertEquals(32, mb_strlen($state));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class AmazonTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Amazon::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class BitbucketTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Bitbucket::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class DigitalOceanTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\DigitalOcean::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class DiscordTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Discord::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class FacebookTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Facebook::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
use SocialConnect\OAuth2\AccessToken;
|
||||
|
||||
class GitHubTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\GitHub::class;
|
||||
}
|
||||
|
||||
public function testParseTokenSuccess()
|
||||
{
|
||||
$expectedToken = 'XXXXXXXX';
|
||||
|
||||
$accessToken = $this->getProvider()->parseToken(
|
||||
http_build_query(
|
||||
[
|
||||
'access_token' => $expectedToken
|
||||
],
|
||||
null,
|
||||
'&'
|
||||
)
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(AccessToken::class, $accessToken);
|
||||
parent::assertSame($expectedToken, $accessToken->getToken());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class GitLabTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\GitLab::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class GoogleTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Google::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class InstagramTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Instagram::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Bogdan Popa https://github.com/icex <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class LinkedInTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\LinkedIn::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
use SocialConnect\OAuth2\AccessToken;
|
||||
|
||||
class MailRuTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\MailRu::class;
|
||||
}
|
||||
|
||||
public function testParseTokenSuccess()
|
||||
{
|
||||
$expectedToken = 'XXXXXXXX';
|
||||
$expectedUserId = 123456;
|
||||
|
||||
$accessToken = $this->getProvider()->parseToken(
|
||||
json_encode(
|
||||
[
|
||||
'access_token' => $expectedToken,
|
||||
// MailRU uses x_mailru_vid instead of user_id
|
||||
'x_mailru_vid' => $expectedUserId
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(AccessToken::class, $accessToken);
|
||||
parent::assertSame($expectedToken, $accessToken->getToken());
|
||||
parent::assertSame($expectedUserId, $accessToken->getUserId());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class MicrosoftTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Microsoft::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class OdnoklassnikiTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Odnoklassniki::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class RedditTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Reddit::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class SlackTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Slack::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class SteeinTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Steein::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class TwitchTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Twitch::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class VimeoTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Vimeo::class;
|
||||
}
|
||||
|
||||
public function testGetIdentityInternalServerError()
|
||||
{
|
||||
// Ignore this test for Vimeo
|
||||
}
|
||||
|
||||
public function testGetIdentityNotValidJSON()
|
||||
{
|
||||
// Ignore this test for Vimeo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
use SocialConnect\Provider\Consumer;
|
||||
use SocialConnect\OAuth2\AccessToken;
|
||||
use SocialConnect\Common\Http\Client\ClientInterface;
|
||||
use SocialConnect\Provider\Session\SessionInterface;
|
||||
|
||||
class VkTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Vk::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ClientInterface|null $httpClient
|
||||
* @return \SocialConnect\OAuth2\Provider\Vk
|
||||
*/
|
||||
protected function getProvider(ClientInterface $httpClient = null, SessionInterface $session = null)
|
||||
{
|
||||
if (!$httpClient) {
|
||||
$httpClient = $this->getMockBuilder(\SocialConnect\Common\Http\Client\Curl::class)
|
||||
->disableOriginalConstructor()
|
||||
->disableProxyingToOriginalMethods()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
if (!$session) {
|
||||
$session = $this->getMockBuilder(\SocialConnect\Provider\Session\Session::class)
|
||||
->disableOriginalConstructor()
|
||||
->disableProxyingToOriginalMethods()
|
||||
->getMock();
|
||||
}
|
||||
|
||||
return new \SocialConnect\OAuth2\Provider\Vk(
|
||||
$httpClient,
|
||||
$session,
|
||||
new Consumer(
|
||||
'unknown',
|
||||
'unkwown'
|
||||
),
|
||||
[
|
||||
'redirectUri' => 'http://localhost:8000/'
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testMakeAccessTokenRequest()
|
||||
{
|
||||
$expectedCode = 'djsflkSdjflskdfjFlsd9';
|
||||
|
||||
$provider = $this->getProvider();
|
||||
|
||||
/** @var \SocialConnect\Common\Http\Request $request */
|
||||
$request = parent::callProtectedMethod(
|
||||
$provider,
|
||||
'makeAccessTokenRequest',
|
||||
[
|
||||
$expectedCode
|
||||
]
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(\SocialConnect\Common\Http\Request::class, $request);
|
||||
parent::assertSame($provider->getRequestTokenUri(), $request->getUri());
|
||||
}
|
||||
|
||||
public function testGetIdentitySuccess()
|
||||
{
|
||||
$mockedHttpClient = $this->mockClientResponse(
|
||||
json_encode(
|
||||
[
|
||||
'response' => [
|
||||
[
|
||||
'id' => $expectedId = 12321312312312,
|
||||
'first_name' => $expectedFirstname = 'Dmitry',
|
||||
'last_name' => $expectedLastname = 'Patsura',
|
||||
'sex' => 1,
|
||||
]
|
||||
]
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
$result = $this->getProvider($mockedHttpClient)->getIdentity(
|
||||
new AccessToken(
|
||||
[
|
||||
'access_token' => '123456789'
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(\SocialConnect\Common\Entity\User::class, $result);
|
||||
parent::assertSame($expectedId, $result->id);
|
||||
parent::assertSame($expectedFirstname, $result->firstname);
|
||||
parent::assertSame($expectedLastname, $result->lastname);
|
||||
parent::assertSame('female', $result->sex);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \SocialConnect\Provider\Exception\InvalidResponse
|
||||
* @expectedExceptionMessage API response is not a valid JSON object
|
||||
*/
|
||||
public function testGetIdentityNotData()
|
||||
{
|
||||
$mockedHttpClient = $this->mockClientResponse(
|
||||
[],
|
||||
200
|
||||
);
|
||||
|
||||
$result = $this->getProvider($mockedHttpClient)->getIdentity(
|
||||
new AccessToken(
|
||||
[
|
||||
'access_token' => '123456789'
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class WordpressTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\WordPress::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
*
|
||||
* @author: Bogdan Popa https://github.com/icex <[email protected]>
|
||||
*/
|
||||
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
use SocialConnect\OAuth2\AccessToken;
|
||||
|
||||
class YahooTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Yahoo::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws \SocialConnect\Provider\Exception\InvalidAccessToken
|
||||
*/
|
||||
public function testParseTokenSuccess()
|
||||
{
|
||||
$expectedToken = 'XXXXXXXX';
|
||||
$expectedUserId = 'ETAPBOZJBRRBKZE6LLUMJYD3JA';
|
||||
|
||||
$accessToken = $this->getProvider()->parseToken(
|
||||
json_encode(
|
||||
[
|
||||
'access_token' => $expectedToken,
|
||||
// Yahoo uses xoauth_yahoo_guid instead of user_id
|
||||
'xoauth_yahoo_guid' => $expectedUserId
|
||||
]
|
||||
)
|
||||
);
|
||||
|
||||
parent::assertInstanceOf(AccessToken::class, $accessToken);
|
||||
parent::assertSame($expectedToken, $accessToken->getToken());
|
||||
parent::assertSame($expectedUserId, $accessToken->getUserId());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* SocialConnect project
|
||||
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
|
||||
*/
|
||||
|
||||
namespace Test\OAuth2\Provider;
|
||||
|
||||
class YandexTest extends AbstractProviderTestCase
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getProviderClassName()
|
||||
{
|
||||
return \SocialConnect\OAuth2\Provider\Yandex::class;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user