Provide base methods for userUid, userEmail and userScreenName + Tests
parent
a6eb0742ca
commit
85d88a449e
|
@ -33,6 +33,9 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
|
|
||||||
public $headers = null;
|
public $headers = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var GuzzleClient
|
||||||
|
*/
|
||||||
protected $httpClient;
|
protected $httpClient;
|
||||||
|
|
||||||
protected $redirectHandler;
|
protected $redirectHandler;
|
||||||
|
@ -93,7 +96,7 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
* @param AccessToken $token
|
* @param AccessToken $token
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
abstract public function urlUserDetails(\League\OAuth2\Client\Token\AccessToken $token);
|
abstract public function urlUserDetails(AccessToken $token);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given an object response from the server, process the user details into a format expected by the user
|
* Given an object response from the server, process the user details into a format expected by the user
|
||||||
|
@ -103,7 +106,7 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
* @param AccessToken $token
|
* @param AccessToken $token
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
abstract public function userDetails($response, \League\OAuth2\Client\Token\AccessToken $token);
|
abstract public function userDetails($response, AccessToken $token);
|
||||||
|
|
||||||
public function getScopes()
|
public function getScopes()
|
||||||
{
|
{
|
||||||
|
@ -131,7 +134,8 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
return $this->urlAuthorize().'?'.$this->httpBuildQuery($params, '', '&');
|
return $this->urlAuthorize().'?'.$this->httpBuildQuery($params, '', '&');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function authorize($options = [])
|
// @codeCoverageIgnoreStart
|
||||||
|
public function authorize($options = array())
|
||||||
{
|
{
|
||||||
$url = $this->getAuthorizationUrl($options);
|
$url = $this->getAuthorizationUrl($options);
|
||||||
if ($this->redirectHandler) {
|
if ($this->redirectHandler) {
|
||||||
|
@ -175,7 +179,7 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
// No providers included with this library use get but 3rd parties may
|
// No providers included with this library use get but 3rd parties may
|
||||||
$client = $this->getHttpClient();
|
$client = $this->getHttpClient();
|
||||||
$client->setBaseUrl($this->urlAccessToken() . '?' . $this->httpBuildQuery($requestParams, '', '&'));
|
$client->setBaseUrl($this->urlAccessToken() . '?' . $this->httpBuildQuery($requestParams, '', '&'));
|
||||||
$request = $client->send();
|
$request = $client->get(null, null, $requestParams)->send();
|
||||||
$response = $request->getBody();
|
$response = $request->getBody();
|
||||||
break;
|
break;
|
||||||
// @codeCoverageIgnoreEnd
|
// @codeCoverageIgnoreEnd
|
||||||
|
@ -263,6 +267,21 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
return $this->userScreenName(json_decode($response), $token);
|
return $this->userScreenName(json_decode($response), $token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function userUid($response, AccessToken $token)
|
||||||
|
{
|
||||||
|
return isset($response->id) && $response->id ? $response->id : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userEmail($response, AccessToken $token)
|
||||||
|
{
|
||||||
|
return isset($response->email) && $response->email ? $response->email : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userScreenName($response, AccessToken $token)
|
||||||
|
{
|
||||||
|
return isset($response->name) && $response->name ? $response->name : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build HTTP the HTTP query, handling PHP version control options
|
* Build HTTP the HTTP query, handling PHP version control options
|
||||||
*
|
*
|
||||||
|
@ -270,6 +289,7 @@ abstract class AbstractProvider implements ProviderInterface
|
||||||
* @param integer $numeric_prefix
|
* @param integer $numeric_prefix
|
||||||
* @param string $arg_separator
|
* @param string $arg_separator
|
||||||
* @param null|integer $enc_type
|
* @param null|integer $enc_type
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
* @codeCoverageIgnoreStart
|
* @codeCoverageIgnoreStart
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,10 +2,15 @@
|
||||||
|
|
||||||
namespace League\OAuth2\Client\Test\Provider;
|
namespace League\OAuth2\Client\Test\Provider;
|
||||||
|
|
||||||
use Mockery as m;
|
use League\OAuth2\Client\Provider\AbstractProvider;
|
||||||
|
use League\OAuth2\Client\Token\AccessToken;
|
||||||
|
use \Mockery as m;
|
||||||
|
|
||||||
class AbstractProviderTest extends \PHPUnit_Framework_TestCase
|
class AbstractProviderTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var AbstractProvider
|
||||||
|
*/
|
||||||
protected $provider;
|
protected $provider;
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
|
@ -87,6 +92,56 @@ class AbstractProviderTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
$this->assertNotFalse($this->testFunction);
|
$this->assertNotFalse($this->testFunction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $response
|
||||||
|
*
|
||||||
|
* @dataProvider userPropertyProvider
|
||||||
|
*/
|
||||||
|
public function testGetUserProperties($response, $name = null, $email = null, $id = null)
|
||||||
|
{
|
||||||
|
$token = new AccessToken(['access_token' => 'abc', 'expires_in' => 3600]);
|
||||||
|
|
||||||
|
$provider = $this->getMockForAbstractClass(
|
||||||
|
'\League\OAuth2\Client\Provider\AbstractProvider',
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'clientId' => 'mock_client_id',
|
||||||
|
'clientSecret' => 'mock_secret',
|
||||||
|
'redirectUri' => 'none',
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var $provider AbstractProvider
|
||||||
|
*/
|
||||||
|
|
||||||
|
$this->assertEquals($name, $provider->userScreenName($response, $token));
|
||||||
|
$this->assertEquals($email, $provider->userEmail($response, $token));
|
||||||
|
$this->assertEquals($id, $provider->userUid($response, $token));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userPropertyProvider()
|
||||||
|
{
|
||||||
|
$response = new \stdClass();
|
||||||
|
$response->id = 1;
|
||||||
|
$response->email = 'test@example.com';
|
||||||
|
$response->name = 'test';
|
||||||
|
|
||||||
|
$response2 = new \stdClass();
|
||||||
|
$response2->id = null;
|
||||||
|
$response2->email = null;
|
||||||
|
$response2->name = null;
|
||||||
|
|
||||||
|
$response3 = new \stdClass();
|
||||||
|
|
||||||
|
return [
|
||||||
|
[$response, 'test', 'test@example.com', 1],
|
||||||
|
[$response2],
|
||||||
|
[$response3],
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockProvider extends \League\OAuth2\Client\Provider\AbstractProvider
|
class MockProvider extends \League\OAuth2\Client\Provider\AbstractProvider
|
||||||
|
|
Loading…
Reference in New Issue