getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\ServiceInterface', $service); } /** * @covers OAuth\OAuth2\Service\Google::__construct */ public function testConstructCorrectInstanceWithoutCustomUri() { $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service); } /** * @covers OAuth\OAuth2\Service\Google::__construct */ public function testConstructCorrectInstanceWithCustomUri() { $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'), array(), $this->getMock('\\OAuth\\Common\\Http\\Uri\\UriInterface') ); $this->assertInstanceOf('\\OAuth\\OAuth2\\Service\\AbstractService', $service); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::getAuthorizationEndpoint */ public function testGetAuthorizationEndpoint() { $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertSame( 'https://accounts.google.com/o/oauth2/auth?access_type=online', $service->getAuthorizationEndpoint()->getAbsoluteUri() ); // Verify that 'offine' works $service->setAccessType('offline'); $this->assertSame( 'https://accounts.google.com/o/oauth2/auth?access_type=offline', $service->getAuthorizationEndpoint()->getAbsoluteUri() ); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::getAuthorizationEndpoint */ public function testGetAuthorizationEndpointException() { $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->setExpectedException('OAuth\OAuth2\Service\Exception\InvalidAccessTypeException'); try { $service->setAccessType('invalid'); } catch (InvalidAccessTypeException $e) { return; } $this->fail('Expected InvalidAccessTypeException not thrown'); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::getAccessTokenEndpoint */ public function testGetAccessTokenEndpoint() { $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'), $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertSame( 'https://accounts.google.com/o/oauth2/token', $service->getAccessTokenEndpoint()->getAbsoluteUri() ); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse */ public function testParseAccessTokenResponseThrowsExceptionOnNulledResponse() { $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'); $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue(null)); $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException'); $service->requestAccessToken('foo'); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse */ public function testParseAccessTokenResponseThrowsExceptionOnError() { $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'); $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('error=some_error')); $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->setExpectedException('\\OAuth\\Common\\Http\\Exception\\TokenResponseException'); $service->requestAccessToken('foo'); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse */ public function testParseAccessTokenResponseValidWithoutRefreshToken() { $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'); $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('{"access_token":"foo","expires_in":"bar"}')); $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo')); } /** * @covers OAuth\OAuth2\Service\Google::__construct * @covers OAuth\OAuth2\Service\Google::parseAccessTokenResponse */ public function testParseAccessTokenResponseValidWithRefreshToken() { $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface'); $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('{"access_token":"foo","expires_in":"bar","refresh_token":"baz"}')); $service = new Google( $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface') ); $this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo')); } }