Skip to content

Commit

Permalink
Bug expires at (#783)
Browse files Browse the repository at this point in the history
* verify that expires_at is an int before casting it as such.

* casting expires_at as int within try catch with test.

Co-authored-by: Scott Gifford <sgifford@activecampaign.com>
  • Loading branch information
dotGiff and sgifford-ac committed Oct 22, 2021
1 parent f655d73 commit ff24e70
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
5 changes: 4 additions & 1 deletion oauthlib/oauth2/rfc6749/clients/base.py
Expand Up @@ -513,7 +513,10 @@ def populate_token_attributes(self, response):
self._expires_at = time.time() + int(self.expires_in)

if 'expires_at' in response:
self._expires_at = int(response.get('expires_at'))
try:
self._expires_at = int(response.get('expires_at'))
except:
self._expires_at = None

if 'mac_key' in response:
self.mac_key = response.get('mac_key')
Expand Down
24 changes: 24 additions & 0 deletions tests/oauth2/rfc6749/clients/test_base.py
Expand Up @@ -301,3 +301,27 @@ def test_prepare_refresh_token_request(self):
self.assertEqual(u, url)
self.assertEqual(h, {'Content-Type': 'application/x-www-form-urlencoded'})
self.assertFormBodyEqual(b, 'grant_type=refresh_token&scope={}&refresh_token={}'.format(scope, token))

def test_parse_token_response_invalid_expires_at(self):
token_json = ('{ "access_token":"2YotnFZFEjr1zCsicMWpAA",'
' "token_type":"example",'
' "expires_at":"2006-01-02T15:04:05Z",'
' "scope":"/profile",'
' "example_parameter":"example_value"}')
token = {
"access_token": "2YotnFZFEjr1zCsicMWpAA",
"token_type": "example",
"expires_at": "2006-01-02T15:04:05Z",
"scope": ["/profile"],
"example_parameter": "example_value"
}

client = Client(self.client_id)

# Parse code and state
response = client.parse_request_body_response(token_json, scope=["/profile"])
self.assertEqual(response, token)
self.assertEqual(None, client._expires_at)
self.assertEqual(client.access_token, response.get("access_token"))
self.assertEqual(client.refresh_token, response.get("refresh_token"))
self.assertEqual(client.token_type, response.get("token_type"))

0 comments on commit ff24e70

Please sign in to comment.