diff --git a/src/Grant/Authorizationcode.php b/src/Grant/AuthorizationCode.php similarity index 100% rename from src/Grant/Authorizationcode.php rename to src/Grant/AuthorizationCode.php diff --git a/src/Provider/Eventbrite.php b/src/Provider/Eventbrite.php index 4b26e93..31ee635 100644 --- a/src/Provider/Eventbrite.php +++ b/src/Provider/Eventbrite.php @@ -48,6 +48,6 @@ class Eventbrite extends IdentityProvider public function userScreenName($response, \League\OAuth2\Client\Token\AccessToken $token) { - return array($response->first_name, $response->last_name); + return $response->user->user_id; } } diff --git a/src/Provider/IdentityProvider.php b/src/Provider/IdentityProvider.php index 8741383..46d7699 100644 --- a/src/Provider/IdentityProvider.php +++ b/src/Provider/IdentityProvider.php @@ -111,7 +111,7 @@ abstract class IdentityProvider } $grant = new $grant; } elseif (! $grant instanceof GrantInterface) { - throw new \InvalidArgumentException($grant.' is not an instance of League\OAuth2\Client\Grant\GrantInterface'); + throw new \InvalidArgumentException(get_class($grant) . ' is not an instance of League\OAuth2\Client\Grant\GrantInterface'); } $defaultParams = array( @@ -126,21 +126,30 @@ abstract class IdentityProvider try { switch (strtoupper($this->method)) { case 'GET': + // @codeCoverageIgnoreStart + // No providers included with this library use get but 3rd parties may $client = $this->getHttpClient(); $client->setBaseUrl($this->urlAccessToken() . '?' . $this->httpBuildQuery($requestParams, '', '&', PHP_QUERY_RFC1738)); $request = $client->send(); $response = $request->getBody(); break; + // @codeCoverageIgnoreEnd case 'POST': $client = $this->getHttpClient(); $client->setBaseUrl($this->urlAccessToken()); $request = $client->post(null, null, $requestParams)->send(); $response = $request->getBody(); break; + // @codeCoverageIgnoreStart + default: + throw new \InvalidArgumentException('Neither GET nor POST is specified for request'); + // @codeCoverageIgnoreEnd } } catch (BadResponseException $e) { + // @codeCoverageIgnoreStart $raw_response = explode("\n", $e->getResponse()); $response = end($raw_response); + // @codeCoverageIgnoreEnd } switch ($this->responseType) { @@ -153,36 +162,38 @@ abstract class IdentityProvider } if (isset($result['error']) && ! empty($result['error'])) { + // @codeCoverageIgnoreStart throw new IDPException($result); + // @codeCoverageIgnoreEnd } return $grant->handleResponse($result); } - public function getUserDetails(AccessToken $token, $force = false) + public function getUserDetails(AccessToken $token) { $response = $this->fetchUserDetails($token); return $this->userDetails(json_decode($response), $token); } - public function getUserUid(AccessToken $token, $force = false) + public function getUserUid(AccessToken $token) { - $response = $this->fetchUserDetails($token, $force); + $response = $this->fetchUserDetails($token, true); return $this->userUid(json_decode($response), $token); } - public function getUserEmail(AccessToken $token, $force = false) + public function getUserEmail(AccessToken $token) { - $response = $this->fetchUserDetails($token, $force); + $response = $this->fetchUserDetails($token, true); return $this->userEmail(json_decode($response), $token); } - public function getUserScreenName(AccessToken $token, $force = false) + public function getUserScreenName(AccessToken $token) { - $response = $this->fetchUserDetails($token, $force); + $response = $this->fetchUserDetails($token, true); return $this->userScreenName(json_decode($response), $token); } @@ -195,6 +206,7 @@ abstract class IdentityProvider * @param string $arg_separator * @param null|integer $enc_type * @return string + * @codeCoverageIgnoreStart */ protected function httpBuildQuery($params, $numeric_prefix = 0, $arg_separator = '&', $enc_type = null) { @@ -210,7 +222,7 @@ abstract class IdentityProvider return $url; } - protected function fetchUserDetails(AccessToken $token, $force = false) + protected function fetchUserDetails(AccessToken $token) { $url = $this->urlUserDetails($token); diff --git a/src/Provider/User.php b/src/Provider/User.php index af5da1f..51d1693 100644 --- a/src/Provider/User.php +++ b/src/Provider/User.php @@ -15,13 +15,15 @@ class User protected $imageUrl; protected $urls; - public function __get($property) { + public function __get($property) + { if (property_exists($this, $property)) { return $this->$property; } } - public function __set($property, $value) { + public function __set($property, $value) + { if (property_exists($this, $property)) { $this->$property = $value; } diff --git a/src/Token/AccessToken.php b/src/Token/AccessToken.php index 0784e85..83c5e73 100755 --- a/src/Token/AccessToken.php +++ b/src/Token/AccessToken.php @@ -69,15 +69,4 @@ class AccessToken { return (string) $this->accessToken; } - - /** - * Return a boolean if the property is set - * - * @param string variable name - * @return bool - */ - public function __isset($key) - { - return isset($this->$key); - } } diff --git a/test/src/Grant/AuthorizationCodeTest.php b/test/src/Grant/AuthorizationCodeTest.php new file mode 100644 index 0000000..9ecff0e --- /dev/null +++ b/test/src/Grant/AuthorizationCodeTest.php @@ -0,0 +1,46 @@ +provider = new \League\OAuth2\Client\Provider\Google(array( + 'clientId' => 'mock_client_id', + 'clientSecret' => 'mock_secret', + 'redirectUri' => 'none', + )); + } + + protected function tearDown() + { +# m::close(); + } + + public function testGetAccessToken() + { + $grant = new \League\OAuth2\Client\Grant\AuthorizationCode(); + $this->assertEquals('authorization_code', (string) $grant); + } + + /** + * @expectedException BadMethodCallException + */ + public function testInvalidRefreshToken() + { + $response = m::mock('Guzzle\Http\Message\Response'); + $response->shouldReceive('getBody')->times(2)->andReturn('{"access_token": "mock_access_token", "expires": 3600, "refresh_token": "mock_refresh_token", "uid": 1}'); + + $client = m::mock('Guzzle\Service\Client'); + $client->shouldReceive('setBaseUrl')->times(1); + $client->shouldReceive('post->send')->times(1)->andReturn($response); + $this->provider->setHttpClient($client); + + $token = $this->provider->getAccessToken('authorization_code', array('invalid_code' => 'mock_authorization_code')); + } +} diff --git a/test/src/Grant/RefreshTokenTest.php b/test/src/Grant/RefreshTokenTest.php index 39f64e0..02c6cde 100644 --- a/test/src/Grant/RefreshTokenTest.php +++ b/test/src/Grant/RefreshTokenTest.php @@ -1,6 +1,6 @@ provider->getAccessToken($grant, array('refresh_token' => $token->refreshToken)); - $this->assertEquals('refresh_token', (string)$grant); + $this->assertEquals('refresh_token', (string) $grant); } /** diff --git a/test/src/Provider/EventbriteTest.php b/test/src/Provider/EventbriteTest.php index 6f0fe48..c1bdaa8 100644 --- a/test/src/Provider/EventbriteTest.php +++ b/test/src/Provider/EventbriteTest.php @@ -90,6 +90,7 @@ class EventbriteTest extends \PHPUnit_Framework_TestCase $this->assertEquals(12345, $this->provider->getUserUid($token)); $this->assertEquals('mock_email', $this->provider->getUserEmail($token)); + $this->assertEquals(12345, $this->provider->getUserScreenName($token)); $this->assertEquals('mock_email', $user->email); } } diff --git a/test/src/Provider/IdentityProviderTest.php b/test/src/Provider/IdentityProviderTest.php new file mode 100644 index 0000000..31177ac --- /dev/null +++ b/test/src/Provider/IdentityProviderTest.php @@ -0,0 +1,41 @@ +provider = new \League\OAuth2\Client\Provider\Google(array( + 'clientId' => 'mock_client_id', + 'clientSecret' => 'mock_secret', + 'redirectUri' => 'none', + )); + } + + protected function tearDown() + { +# m::close(); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testInvalidGrantString() + { + $test = $this->provider->getAccessToken('invalid_grant', array('invalid_parameter' => 'none')); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testInvalidGrantObject() + { + $grant = new \StdClass; + $test = $this->provider->getAccessToken($grant, array('invalid_parameter' => 'none')); + } +} diff --git a/test/src/Token/AccessTokenTest.php b/test/src/Token/AccessTokenTest.php new file mode 100644 index 0000000..3b83e43 --- /dev/null +++ b/test/src/Token/AccessTokenTest.php @@ -0,0 +1,14 @@ + 'none')); + } +}