Exemplo n.º 1
0
 def test_successful_attempt_to_refresh_token(self, mock_post):
     """Test a successful attempt for a refresh id_token."""
     mock_response = Mock()
     mock_response.status_code = 200
     mock_response.json.return_value = {'id_token': 'foobar'}
     mock_post.return_value = mock_response
     self.assertEqual(refresh_id_token('token'), 'foobar')
Exemplo n.º 2
0
 def test_unsuccessful_attempt_to_refresh_token(self, mock_post):
     """Test an attempt to get a refresh token that raises an error."""
     mock_response = Mock()
     mock_response.status_code = 401
     http_error = requests.exceptions.HTTPError()
     mock_response.raise_for_status.side_effect = http_error
     mock_post.return_value = mock_response
     self.assertEqual(refresh_id_token('token'), None)
Exemplo n.º 3
0
    def process_request(self, request):
        if request.user.is_authenticated() and not request.is_ajax():

            if 'oidc_id_token' not in request.session:
                return None

            cache_key = 'renew_id_token:{}'.format(request.user.id)
            if cache.get(cache_key):
                # still valid, we checked recently
                return

            id_token = refresh_id_token(request.session['oidc_id_token'])

            if id_token:
                assert isinstance(id_token, string_types)
                request.session['oidc_id_token'] = id_token
                timeout = import_from_settings('OIDC_RENEW_ID_TOKEN_EXPIRY_SECONDS', 60 * 15)
                cache.set(cache_key, True, timeout)
            else:
                # If that failed, your previous id_token is not valid
                # and you need to be signed out so you can get a new
                # one.
                return OIDCLogoutView.as_view()(request)