diff --git a/src/Provider/Github.php b/src/Provider/Github.php index b78727b..4dc01e2 100644 --- a/src/Provider/Github.php +++ b/src/Provider/Github.php @@ -10,6 +10,8 @@ class Github extends AbstractProvider public $domain = 'https://github.com'; + public $apiDomain = 'https://api.github.com'; + public function urlAuthorize() { return $this->domain.'/login/oauth/authorize'; @@ -23,7 +25,7 @@ class Github extends AbstractProvider public function urlUserDetails(\League\OAuth2\Client\Token\AccessToken $token) { if ($this->domain === 'https://github.com') { - return $this->domain.'/user?access_token='.$token; + return $this->apiDomain.'/user?access_token='.$token; } return $this->domain.'/api/v3/user?access_token='.$token; } @@ -31,7 +33,7 @@ class Github extends AbstractProvider public function urlUserEmails(\League\OAuth2\Client\Token\AccessToken $token) { if ($this->domain === 'https://github.com') { - return $this->domain.'/user/emails?access_token='.$token; + return $this->apiDomain.'/user/emails?access_token='.$token; } return $this->domain.'/api/v3/user/emails?access_token='.$token; } diff --git a/test/src/Provider/GithubTest.php b/test/src/Provider/GithubTest.php index c0843ca..94795ed 100644 --- a/test/src/Provider/GithubTest.php +++ b/test/src/Provider/GithubTest.php @@ -115,6 +115,23 @@ class GithubTest extends \PHPUnit_Framework_TestCase $this->assertEquals('mock_email', $this->provider->getUserEmail($token)); } + public function testGithubDomainUrls() + { + $client = m::mock('Guzzle\Service\Client'); + $response = m::mock('Guzzle\Http\Message\Response'); + $response->shouldReceive('getBody')->times(1)->andReturn('access_token=mock_access_token&expires=3600&refresh_token=mock_refresh_token&otherKey={1234}'); + + $client->shouldReceive('setBaseUrl')->times(1); + $client->shouldReceive('post->send')->times(1)->andReturn($response); + $this->provider->setHttpClient($client); + $token = $this->provider->getAccessToken('authorization_code', ['code' => 'mock_authorization_code']); + + $this->assertEquals($this->provider->domain.'/login/oauth/authorize', $this->provider->urlAuthorize()); + $this->assertEquals($this->provider->domain.'/login/oauth/access_token', $this->provider->urlAccessToken()); + $this->assertEquals($this->provider->apiDomain.'/user?access_token=mock_access_token', $this->provider->urlUserDetails($token)); + $this->assertEquals($this->provider->apiDomain.'/user/emails?access_token=mock_access_token', $this->provider->urlUserEmails($token)); + } + public function testGithubEnterpriseDomainUrls() { $this->provider->domain = 'https://github.company.com';