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')
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)
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)