From 1776f7cf1d954886c5a27d7c655908cf32233b1b Mon Sep 17 00:00:00 2001 From: Saleem Latif Date: Tue, 7 May 2019 11:27:42 +0500 Subject: [PATCH] Update cookies.get_decoded_jwt logic to also query jwt cookie from request.auth --- AUTHORS | 1 + edx_rest_framework_extensions/__init__.py | 2 +- edx_rest_framework_extensions/auth/jwt/cookies.py | 2 +- .../auth/jwt/tests/test_cookies.py | 13 ++++++++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/AUTHORS b/AUTHORS index 48b226e2..fdc23707 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,3 +2,4 @@ Clinton Blackburn Bill DeRusha Jeremy Bowman Robert Raposa +Saleem Latif diff --git a/edx_rest_framework_extensions/__init__.py b/edx_rest_framework_extensions/__init__.py index a732946c..b6052f61 100644 --- a/edx_rest_framework_extensions/__init__.py +++ b/edx_rest_framework_extensions/__init__.py @@ -1,3 +1,3 @@ """ edx Django REST Framework extensions. """ -__version__ = '2.2.0' # pragma: no cover +__version__ = '2.2.1' # pragma: no cover diff --git a/edx_rest_framework_extensions/auth/jwt/cookies.py b/edx_rest_framework_extensions/auth/jwt/cookies.py index 249ec3eb..2dc27657 100644 --- a/edx_rest_framework_extensions/auth/jwt/cookies.py +++ b/edx_rest_framework_extensions/auth/jwt/cookies.py @@ -29,7 +29,7 @@ def get_decoded_jwt(request): Returns a decoded jwt dict if it can be found. Returns None if the jwt is not found. """ - jwt_cookie = request.COOKIES.get(jwt_cookie_name(), None) + jwt_cookie = request.COOKIES.get(jwt_cookie_name(), None) or getattr(request, 'auth', None) if not jwt_cookie: return None diff --git a/edx_rest_framework_extensions/auth/jwt/tests/test_cookies.py b/edx_rest_framework_extensions/auth/jwt/tests/test_cookies.py index ff54880f..7e5f8d16 100644 --- a/edx_rest_framework_extensions/auth/jwt/tests/test_cookies.py +++ b/edx_rest_framework_extensions/auth/jwt/tests/test_cookies.py @@ -46,6 +46,17 @@ def test_get_decoded_jwt_from_existing_cookie(self): self.assertEquals(expected_decoded_jwt, decoded_jwt) def test_get_decoded_jwt_when_no_cookie(self): - mock_request = mock.Mock(COOKIES={}) + mock_request = mock.Mock(COOKIES={}, auth=None) self.assertIsNone(cookies.get_decoded_jwt(mock_request)) + + def test_get_decoded_jwt_from_auth(self): + user = UserFactory() + payload = generate_latest_version_payload(user) + jwt = generate_jwt_token(payload) + expected_decoded_jwt = jwt_decode_handler(jwt) + + mock_request_with_cookie = mock.Mock(COOKIES={}, auth=jwt) + + decoded_jwt = cookies.get_decoded_jwt(mock_request_with_cookie) + self.assertEquals(expected_decoded_jwt, decoded_jwt)