diff --git a/tests/authentication/server_test.php b/tests/authentication/server_test.php index 211c03a1..6e79e24c 100644 --- a/tests/authentication/server_test.php +++ b/tests/authentication/server_test.php @@ -89,6 +89,66 @@ class Authentication_Server_test extends PHPUnit_Framework_TestCase { ), $this->oauth->checkClientAuthoriseParams($params)); } + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_checkClientAuthoriseParams_missingClientId() + { + $this->oauth->checkClientAuthoriseParams(); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_checkClientAuthoriseParams_missingRedirectUri() + { + $_GET['client_id'] = 'test'; + + $this->oauth->checkClientAuthoriseParams(); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_checkClientAuthoriseParams_missingResponseType() + { + $_GET['client_id'] = 'test'; + $_GET['redirect_uri'] = 'http://example.com/test'; + + $this->oauth->checkClientAuthoriseParams(); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_checkClientAuthoriseParams_missingScopes() + { + $_GET['client_id'] = 'test'; + $_GET['redirect_uri'] = 'http://example.com/test'; + $_GET['response_type'] = 'code'; + $_GET['scope'] = ' '; + + $this->oauth->checkClientAuthoriseParams(); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 4 + */ + function test_checkClientAuthoriseParams_invalidScopes() + { + $_GET['client_id'] = 'test'; + $_GET['redirect_uri'] = 'http://example.com/test'; + $_GET['response_type'] = 'code'; + $_GET['scope'] = 'blah'; + + $this->oauth->checkClientAuthoriseParams(); + } + function test_newAuthoriseRequest() { $result = $this->oauth->newAuthoriseRequest('user', '123', array( @@ -159,4 +219,180 @@ class Authentication_Server_test extends PHPUnit_Framework_TestCase { $this->assertArrayHasKey('expires_in', $result); } + function test_issueAccessToken_PassedParams() + { + $auth_code = $this->oauth->newAuthoriseRequest('user', '123', array( + 'client_id' => 'test', + 'redirect_uri' => 'http://example.com/test', + 'scopes' => array(array( + 'id' => 1, + 'scope' => 'test', + 'name' => 'test', + 'description' => 'test' + )) + )); + + $params['client_id'] = 'test'; + $params['client_secret'] = 'test'; + $params['redirect_uri'] = 'http://example.com/test'; + $params['grant_type'] = 'authorization_code'; + $params['code'] = $auth_code; + + $result = $this->oauth->issueAccessToken($params); + + $this->assertCount(3, $result); + $this->assertArrayHasKey('access_token', $result); + $this->assertArrayHasKey('token_type', $result); + $this->assertArrayHasKey('expires_in', $result); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_issueAccessToken_missingGrantType() + { + $this->oauth->issueAccessToken(); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 7 + */ + function test_issueAccessToken_unsupportedGrantType() + { + $params['grant_type'] = 'blah'; + + $this->oauth->issueAccessToken($params); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_completeAuthCodeGrant_missingClientId() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $method->invoke($this->oauth); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_completeAuthCodeGrant_missingClientSecret() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $authParams['client_id'] = 'test'; + + $method->invoke($this->oauth, $authParams); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_completeAuthCodeGrant_missingRedirectUri() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $authParams['client_id'] = 'test'; + $authParams['client_secret'] = 'test'; + + $method->invoke($this->oauth, $authParams); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 8 + */ + function test_completeAuthCodeGrant_invalidClient() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $authParams['client_id'] = 'test'; + $authParams['client_secret'] = 'test123'; + $authParams['redirect_uri'] = 'http://example.com/test'; + + $method->invoke($this->oauth, $authParams); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 0 + */ + function test_completeAuthCodeGrant_missingCode() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $authParams['client_id'] = 'test'; + $authParams['client_secret'] = 'test'; + $authParams['redirect_uri'] = 'http://example.com/test'; + + $method->invoke($this->oauth, $authParams); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerClientException + * @expectedExceptionCode 9 + */ + function test_completeAuthCodeGrant_invalidCode() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('completeAuthCodeGrant'); + $method->setAccessible(true); + + $authParams['client_id'] = 'test'; + $authParams['client_secret'] = 'test'; + $authParams['redirect_uri'] = 'http://example.com/test'; + $authParams['code'] = 'blah'; + + $method->invoke($this->oauth, $authParams); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerException + * @expectedExceptionMessage No registered database abstractor + */ + function test_noRegisteredDatabaseAbstractor() + { + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('dbcall'); + $method->setAccessible(true); + + $dbAbstractor = $reflector->getProperty('db'); + $dbAbstractor->setAccessible(true); + $dbAbstractor->setValue($this->oauth, null); + + $result = $method->invoke($this->oauth); + } + + /** + * @expectedException Oauth2\Authentication\OAuthServerException + * @expectedExceptionMessage Registered database abstractor is not an instance of Oauth2\Authentication\Database + */ + function test_invalidRegisteredDatabaseAbstractor() + { + $fake = new stdClass; + $this->oauth->registerDbAbstractor($fake); + + $reflector = new ReflectionClass($this->oauth); + $method = $reflector->getMethod('dbcall'); + $method->setAccessible(true); + + $result = $method->invoke($this->oauth); + } + } \ No newline at end of file