Skip to content
This repository has been archived by the owner on Mar 24, 2021. It is now read-only.

Commit

Permalink
get context catches 403s, returns a context with no user
Browse files Browse the repository at this point in the history
  • Loading branch information
jcbashdown committed Aug 4, 2014
1 parent e0669a8 commit 6dde45e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 5 deletions.
12 changes: 8 additions & 4 deletions admin/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,14 @@ def get_context(session):
if 'oauth_user' in session and 'oauth_token' in session:
admin_client = AdminAPI(app.config['STAGECRAFT_HOST'],
session['oauth_token']['access_token'])
context = {
'user': session['oauth_user'],
'data_sets': admin_client.list_data_sets()
}
try:
context = {
'user': session['oauth_user'],
'data_sets': admin_client.list_data_sets()
}
except requests.exceptions.RequestException as e:
if not e.response.status_code == 403:
raise
context['environment'] = environment_dict()

return context
Expand Down
41 changes: 40 additions & 1 deletion tests/admin/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
from admin import app
from hamcrest import assert_that, equal_to, ends_with
from httmock import urlmatch, HTTMock
from mock import patch
from mock import patch, Mock
import requests
from admin.main import get_context


@urlmatch(netloc=r'[a-z]+\.development\.performance\.service\.gov\.uk$')
Expand Down Expand Up @@ -80,3 +82,40 @@ def test_requires_authentication_continues_when_auth_on_upload_error(
with HTTMock(performance_platform_status_mock):
response = self.app.get("/upload-error")
assert_that(response.status_code, equal_to(200))

@patch('requests.get')
def test_get_context_returns_no_user_or_datasets_on_403(
self,
mock_get_request):
bad_response = requests.Response()
bad_response.status_code = 403
mock_get_request.return_value = bad_response
session_context = get_context({
'oauth_token': {
'access_token': 'token'},
'oauth_user': 'a user'})
assert_that(session_context, equal_to({
'environment': {
'human_name': 'Development',
'name': 'development'}}))

@patch('requests.get')
def test_get_context_returns_user_and_datasets_on_200(
self,
mock_get_request):
good_response = requests.Response()
good_response.status_code = 200
mock_json = Mock()
mock_json.return_value = json.dumps({})
good_response.json = mock_json
mock_get_request.return_value = good_response
session_context = get_context({
'oauth_token': {
'access_token': 'token'},
'oauth_user': 'a user'})
assert_that(session_context, equal_to({
'environment': {
'human_name': 'Development',
'name': 'development'},
'data_sets': '{}',
'user': 'a user'}))

0 comments on commit 6dde45e

Please sign in to comment.