Skip to content

Commit

Permalink
Add initial refresh token grant tests. Fix #182.
Browse files Browse the repository at this point in the history
  • Loading branch information
ib-lundgren committed Jun 20, 2013
1 parent a8fbacf commit 6d762fc
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 3 deletions.
5 changes: 2 additions & 3 deletions oauthlib/oauth2/rfc6749/grant_types/refresh_token.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def create_token_response(self, request, token_handler):
log.debug('Validating refresh token request, %r.', request)
self.validate_token_request(request)
except errors.OAuth2Error as e:
return None, headers, e.json, 400
return None, headers, e.json, e.status_code

token = token_handler.create_token(request,
refresh_token=self.issue_new_refresh_tokens)
Expand Down Expand Up @@ -82,7 +82,7 @@ def validate_token_request(self, request):
log.debug('Authenticating client, %r.', request)
if not self.request_validator.authenticate_client(request):
log.debug('Invalid client (%r), denying access.', request)
raise errors.InvalidClientError(request=request)
raise errors.InvalidClientError(request=request, status_code=401)

# Ensure client is authorized use of this grant type
self.validate_grant_type(request)
Expand All @@ -95,5 +95,4 @@ def validate_token_request(self, request):
log.debug('Invalid refresh token, %s, for client %r.',
request.refresh_token, request.client)
raise errors.InvalidGrantError(request=request)

self.validate_scopes(request)
43 changes: 43 additions & 0 deletions tests/oauth2/rfc6749/test_grant_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from oauthlib.oauth2.rfc6749.grant_types import ImplicitGrant
from oauthlib.oauth2.rfc6749.grant_types import ResourceOwnerPasswordCredentialsGrant
from oauthlib.oauth2.rfc6749.grant_types import ClientCredentialsGrant
from oauthlib.oauth2.rfc6749.grant_types import RefreshTokenGrant
from oauthlib.oauth2.rfc6749.tokens import BearerToken


Expand Down Expand Up @@ -190,3 +191,45 @@ def test_error_response(self):
def test_validate_token_response(self):
# wrong grant type, scope
pass


class RefreshTokenGrantTest(TestCase):

def setUp(self):
mock_client = mock.MagicMock()
mock_client.user.return_value = 'mocked user'
self.request = Request('http://a.b/path')
self.request.grant_type = 'refresh_token'
self.request.refresh_token = 'lsdkfhj230'
self.request.client = mock_client
self.request.scopes = ('mocked', 'scopes')
self.mock_validator = mock.MagicMock()
self.auth = RefreshTokenGrant(
request_validator=self.mock_validator)

def test_create_token_response(self):
bearer = BearerToken(self.mock_validator)
uri, headers, body, status_code = self.auth.create_token_response(
self.request, bearer)
token = json.loads(body)
self.assertIn('access_token', token)
self.assertIn('token_type', token)
self.assertIn('expires_in', token)

def test_invalid_token(self):
self.mock_validator.validate_refresh_token.return_value = False
bearer = BearerToken(self.mock_validator)
uri, headers, body, status_code = self.auth.create_token_response(
self.request, bearer)
token = json.loads(body)
self.assertEqual(token['error'], 'invalid_grant')
self.assertEqual(status_code, 400)

def test_invalid_client(self):
self.mock_validator.authenticate_client.return_value = False
bearer = BearerToken(self.mock_validator)
uri, headers, body, status_code = self.auth.create_token_response(
self.request, bearer)
token = json.loads(body)
self.assertEqual(token['error'], 'invalid_client')
self.assertEqual(status_code, 401)

0 comments on commit 6d762fc

Please sign in to comment.