Update tests to use new internal APIs (League Client, Guzzle, this repo)

This commit is contained in:
trogwar
2016-06-29 22:25:25 +03:00
parent 6652435afc
commit 781c3cac39

View File

@@ -2,15 +2,23 @@
namespace J4k\OAuth2\Client\Test\Provider; namespace J4k\OAuth2\Client\Test\Provider;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Response;
use League\OAuth2\Client\Token\AccessToken;
use Mockery as m; use Mockery as m;
use \J4k\OAuth2\Client\Provider\Vkontakte as Provider;
use \J4k\OAuth2\Client\Provider\User;
class VkontakteTest extends \PHPUnit_Framework_TestCase class VkontakteTest extends \PHPUnit_Framework_TestCase
{ {
/**
* @type Provider
*/
protected $provider; protected $provider;
protected function setUp() protected function setUp()
{ {
$this->provider = new \J4k\OAuth2\Client\Provider\Vkontakte([ $this->provider = new Provider([
'clientId' => 'mock_client_id', 'clientId' => 'mock_client_id',
'clientSecret' => 'mock_secret', 'clientSecret' => 'mock_secret',
'redirectUri' => 'none', 'redirectUri' => 'none',
@@ -29,68 +37,81 @@ class VkontakteTest extends \PHPUnit_Framework_TestCase
$uri = parse_url($url); $uri = parse_url($url);
parse_str($uri['query'], $query); parse_str($uri['query'], $query);
$this->assertArrayHasKey('client_id', $query); static::assertArrayHasKey('client_id', $query);
$this->assertArrayHasKey('redirect_uri', $query); static::assertArrayHasKey('redirect_uri', $query);
$this->assertArrayHasKey('state', $query); static::assertArrayHasKey('state', $query);
$this->assertArrayHasKey('scope', $query); static::assertArrayHasKey('scope', $query);
$this->assertArrayHasKey('response_type', $query); static::assertArrayHasKey('response_type', $query);
$this->assertArrayHasKey('approval_prompt', $query); static::assertArrayHasKey('approval_prompt', $query);
$this->assertNotNull($this->provider->state); static::assertNotNull($this->provider->getState());
} }
public function testUrlAccessToken() public function testUrlAccessToken()
{ {
$url = $this->provider->urlAccessToken(); $url = $this->provider->getBaseAccessTokenUrl([]);
$uri = parse_url($url); $uri = parse_url($url);
$this->assertEquals('/access_token', $uri['path']); static::assertEquals('/access_token', $uri['path']);
} }
public function testGetAccessToken() public function testGetAccessToken()
{ {
$response = m::mock('Guzzle\Http\Message\Response'); /**
* @type Client|\Mockery\Mock $client
* @type Response|\Mockery\Mock $response
* @type AccessToken $token
*/
$response = m::mock(new Response);
$response->shouldReceive('getBody')->times(1)->andReturn('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1, "email": "mock_email"}'); $response->shouldReceive('getBody')->times(1)->andReturn('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1, "email": "mock_email"}');
$client = m::mock('Guzzle\Service\Client'); $client = m::mock(new Client);
$client->shouldReceive('setBaseUrl')->times(1); $client->shouldReceive('setBaseUrl')->times(1);
$client->shouldReceive('post->send')->times(1)->andReturn($response); $client->shouldReceive('post->send')->times(1)->andReturn($response);
$this->provider->setHttpClient($client); $this->provider->setHttpClient($client);
$token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']);
$this->assertEquals('mock_access_token', $token->accessToken); static::assertEquals('mock_access_token', $token->getToken());
$this->assertLessThanOrEqual(time() + 3600, $token->expires); static::assertLessThanOrEqual(time() + 3600, $token->getExpires());
$this->assertGreaterThanOrEqual(time(), $token->expires); static::assertGreaterThanOrEqual(time(), $token->getExpires());
$this->assertEquals('mock_refresh_token', $token->refreshToken); static::assertEquals('mock_refresh_token', $token->getRefreshToken());
$this->assertEquals('1', $token->uid); static::assertEquals('1', $token->uid);
$this->assertEquals('mock_email', $token->email); static::assertEquals('mock_email', $token->email);
} }
public function testScopes() public function testScopes()
{ {
$this->assertEquals(['email'], $this->provider->getScopes()); static::assertEquals(['email'], $this->provider->scopes);
} }
public function testUserData() public function testUserData()
{ {
$postResponse = m::mock('Guzzle\Http\Message\Response'); /**
* @type Client|\Mockery\Mock $client
* @type Response|\Mockery\Mock $postResponse
* @type Response|\Mockery\Mock $getResponse
*/
$postResponse = m::mock(new Response);
$postResponse->shouldReceive('getBody')->times(1)->andReturn('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1, "email": "mock_email"}'); $postResponse->shouldReceive('getBody')->times(1)->andReturn('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1, "email": "mock_email"}');
$getResponse = m::mock('Guzzle\Http\Message\Response'); $getResponse = m::mock(new Response);
$getResponse->shouldReceive('getBody')->times(4)->andReturn('{"response": [{"uid": 12345, "nickname": "mock_nickname", "screen_name": "mock_name", "first_name": "mock_first_name", "last_name": "mock_last_name", "country": "UK", "status": "mock_status", "photo_200_orig": "mock_image_url"}]}'); $getResponse->shouldReceive('getBody')->times(4)->andReturn('{"response": [{"uid": 12345, "nickname": "mock_nickname", "screen_name": "mock_name", "first_name": "mock_first_name", "last_name": "mock_last_name", "country": "UK", "status": "mock_status", "photo_200_orig": "mock_image_url"}]}');
$client = m::mock('Guzzle\Service\Client'); $client = m::mock(new Client);
$client->shouldReceive('setBaseUrl')->times(5); $client->shouldReceive('setBaseUrl')->times(5);
$client->shouldReceive('post->send')->times(1)->andReturn($postResponse); $client->shouldReceive('post->send')->times(1)->andReturn($postResponse);
$client->shouldReceive('get->send')->times(4)->andReturn($getResponse); $client->shouldReceive('get->send')->times(4)->andReturn($getResponse);
$this->provider->setHttpClient($client); $this->provider->setHttpClient($client);
$token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']);
$user = $this->provider->getUserDetails($token); /** @type User $user */
$user = $this->provider->getResourceOwner($token);
$this->assertEquals(12345, $this->provider->getUserUid($token)); static::assertEquals(12345, $this->provider->userUid($getResponse, $token));
$this->assertEquals(['mock_first_name', 'mock_last_name'], $this->provider->getUserScreenName($token)); static::assertEquals(['mock_first_name', 'mock_last_name'], $this->provider->userScreenName($getResponse, $token));
$this->assertEquals('mock_email', $this->provider->getUserEmail($token)); static::assertEquals('mock_email', $this->provider->userEmail($getResponse, $token));
$this->assertEquals('mock_email', $user->email); static::assertEquals('mock_email', $user->email);
} }
} }