public function testUserData() { $postResponse = m::mock('Guzzle\\Http\\Message\\Response'); $postResponse->shouldReceive('getBody')->times(1)->andReturn('access_token=mock_access_token&expires=3600&refresh_token=mock_refresh_token&uid=1'); $getResponse = m::mock('Guzzle\\Http\\Message\\Response'); $getResponse->shouldReceive('getBody')->andReturn('{"id": 12345, "name": "mock_name", "username": "******", "first_name": "mock_first_name", "last_name": "mock_last_name", "email": "mock_email", "Location": "mock_home", "bio": "mock_description", "link": "mock_facebook_url"}'); $getResponse->shouldReceive('getInfo')->andReturn(['url' => 'mock_image_url']); $client = m::mock('Guzzle\\Service\\Client'); $client->shouldReceive('setBaseUrl')->times(5); $client->shouldReceive('post->send')->times(1)->andReturn($postResponse); $client->shouldReceive('get->send')->andReturn($getResponse); $this->provider->setHttpClient($client); $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); $user = $this->provider->getUserDetails($token); $this->assertEquals(12345, $this->provider->getUserUid($token)); $this->assertEquals(['mock_first_name', 'mock_last_name'], $this->provider->getUserScreenName($token)); $this->assertEquals('mock_email', $this->provider->getUserEmail($token)); $this->assertEquals('mock_email', $user->email); }
public function testProperlyHandlesErrorResponses() { $postResponse = m::mock('Psr\\Http\\Message\\ResponseInterface'); $postResponse->shouldReceive('getHeader')->times(1)->andReturn('application/json'); $postResponse->shouldReceive('getBody')->times(1)->andReturn('{"error":{"message":"Foo auth error","type":"OAuthException","code":191}}'); $client = m::mock('GuzzleHttp\\ClientInterface'); $client->shouldReceive('send')->times(1)->andReturn($postResponse); $this->provider->setHttpClient($client); $errorMessage = ''; $errorCode = 0; try { $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); } catch (IdentityProviderException $e) { $errorMessage = $e->getMessage(); $errorCode = $e->getCode(); } $this->assertEquals('OAuthException: Foo auth error', $errorMessage); $this->assertEquals(191, $errorCode); }