def test_token_from_cookie(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key(): 'this-is-access-token',
            RidiOAuth2Config.get_refresh_token_cookie_key(): 'this-is-refresh-token'
        }

        token = get_token_from_cookie(request=request)

        self.assertEqual(token.access_token.token, 'this-is-access-token')
        self.assertEqual(token.refresh_token.token, 'this-is-refresh-token')
Example #2
0
def get_token_info(token: str) -> typing.Optional[AccessTokenInfo]:
    try:
        token_info = JwtIntrospectHelper.introspect(jwt_info=RidiOAuth2Config.get_jwt_info(), access_token=token)
    except (KeyError, ExpireTokenException, InvalidJwtSignatureException):
        token_info = None

    return token_info
    def test_login_and_loose_token(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key(): self.loose_token,
        }

        response = self.middleware.process_request(request=request)

        self.assertIsNone(response, HttpUnauthorizedResponse)
        self.assertIsInstance(request.user, AnonymousUser)
        self.assertFalse(request.user.is_authenticated)
    def test_login_and_not_expire(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key(): self.valid_token,
        }

        response = self.middleware.process_request(request=request)

        self.assertIsNone(response)
        self.assertTrue(request.user.is_authenticated)
        self.assertIsInstance(request.user, get_user_model())
        self.assertEqual(request.user.u_idx, request.user.token_info.u_idx)
Example #5
0
    def test_login(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key():
            jwt.encode(payload=self.jwt_payload,
                       key='dummy_jwt_secret').decode(),
        }
        self.middleware.process_request(request)

        response = self.dummy_view(None, request)
        self.assertIsInstance(response, HttpResponse)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content.decode(), 'success')
Example #6
0
    def test_not_exists_token_info(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key():
            jwt.encode(payload=self.jwt_payload,
                       key='dummy_jwt_secret').decode(),
        }
        self.middleware.process_request(request)

        del request.user.token_info

        response1 = self.dummy_view(None, request)

        self.assertIsNone(getattr(request.user, 'token_info', None))
        self.assertIsInstance(response1, HttpUnauthorizedResponse)
        self.assertEqual(response1.status_code, 401)
Example #7
0
    def test_restriction_scope_with_custom_response(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key():
            jwt.encode(payload=self.jwt_loose_payload,
                       key='dummy_jwt_secret').decode(),
        }
        self.middleware.process_request(request)

        response = self.dummy_view_with_custom_response(None, request)

        self.assertIn('user_info', request.user.token_info.scope)

        self.assertIsInstance(response, HttpResponse)
        self.assertEqual(response.content, b'tetete')
        self.assertEqual(response.status_code, 200)
Example #8
0
    def test_restriction_scope(self):
        request = Mock()
        request.COOKIES = {
            RidiOAuth2Config.get_access_token_cookie_key():
            jwt.encode(payload=self.jwt_loose_payload,
                       key='dummy_jwt_secret').decode(),
        }
        self.middleware.process_request(request)

        response1 = self.dummy_view1(None, request)
        response2 = self.dummy_view2(None, request)

        self.assertIn('user_info', request.user.token_info.scope)

        self.assertIsInstance(response1, HttpResponse)
        self.assertEqual(response1.status_code, 200)
        self.assertEqual(response1.content.decode(), 'success1')

        self.assertIsInstance(response2, HttpResponseForbidden)
        self.assertEqual(response2.status_code, 403)
Example #9
0
def _get_refresh_token_from_cookie(request: HttpRequest) -> str:
    return request.COOKIES.get(RidiOAuth2Config.get_refresh_token_cookie_key())
Example #10
0
def generate_cookie(access_token: str) -> typing.Dict:
    return {RidiOAuth2Config.get_access_token_cookie_key(): access_token}