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

Commit

Permalink
update tests to mock requests instead of httplib2
Browse files Browse the repository at this point in the history
  • Loading branch information
Allen Short committed Sep 19, 2012
1 parent 0d76c2b commit db9cd94
Showing 1 changed file with 35 additions and 26 deletions.
61 changes: 35 additions & 26 deletions apps/users/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import collections
from datetime import datetime
import json

Expand Down Expand Up @@ -376,6 +377,8 @@ def test_admin_no_password(self):
eq_(res[0].details['password'][0], u'****')


FakeResponse = collections.namedtuple("FakeResponse", "status_code content")

class TestPasswordAdmin(UserViewBase):
fixtures = ['base/users']

Expand Down Expand Up @@ -592,14 +595,15 @@ def test_login_fails_increment(self):
eq_(user.get().failed_login_attempts, 4)

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_login_success(self, http_request):
"""
A success response from BrowserID results in successful login.
"""
url = reverse('users.browserid_login')
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': 'jbalogh@mozilla.com'}))
http_request.return_value = FakeResponse(200, json.dumps(
{'status': 'okay',
'email': 'jbalogh@mozilla.com'}))
res = self.client.post(url, data=dict(assertion='fake-assertion',
audience='fakeamo.org'))
eq_(res.status_code, 200)
Expand All @@ -609,11 +613,12 @@ def test_browserid_login_success(self, http_request):

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('users.models.UserProfile.log_login_attempt')
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_login_logged(self, http_request, log_login_attempt):
url = reverse('users.browserid_login')
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': 'jbalogh@mozilla.com'}))
http_request.return_value = FakeResponse(200, json.dumps(
{'status': 'okay',
'email': 'jbalogh@mozilla.com'}))
self.client.post(url, data=dict(assertion='fake-assertion',
audience='fakeamo.org'))
log_login_attempt.assert_called_once_with(True)
Expand All @@ -629,14 +634,15 @@ def _make_admin_user(self, email):
GroupUser.objects.create(group=admingroup, user=p)

def _browserid_login(self, email, http_request):
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': email}))
http_request.return_value = FakeResponse(200,
json.dumps({'status': 'okay',
'email': email}))
return self.client.post(reverse('users.browserid_login'),
data=dict(assertion='fake-assertion',
audience='fakeamo.org'))

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_restricted_login(self, http_request):
"""
A success response from BrowserID for accounts restricted to
Expand All @@ -649,7 +655,7 @@ def test_browserid_restricted_login(self, http_request):
eq_(res.status_code, 400)

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_no_account(self, http_request):
"""
BrowserID login for an email address with no account creates a
Expand All @@ -665,15 +671,15 @@ def test_browserid_no_account(self, http_request):

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch.object(settings, 'APP_PREVIEW', True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_mark_as_market(self, http_request):
email = 'newuser@example.com'
self._browserid_login(email, http_request)
profile = UserProfile.objects.get(email=email)
assert '__market__' in profile.notes

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_no_mark_as_market(self, http_request):
email = 'newuser@example.com'
self._browserid_login(email, http_request)
Expand All @@ -682,14 +688,14 @@ def test_browserid_no_mark_as_market(self, http_request):

@patch.object(settings, 'REGISTER_USER_LIMIT', 1)
@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_register_limit(self, http_request):
"""
Account creation via BrowserID respects
settings.REGISTER_USER_LIMIT.
"""

http_request.return_value = (200, json.dumps(
http_request.return_value = FakeResponse(200, json.dumps(
{'status': 'okay',
'email': 'extrauser@example.com'}))
old_profile_count = UserProfile.objects.count()
Expand All @@ -708,11 +714,12 @@ def test_browserid_register_limit(self, http_request):
@patch.object(settings, 'REGISTER_USER_LIMIT', 1)
@patch.object(settings, 'REGISTER_OVERRIDE_TOKEN', 'mozilla')
@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_override_browserid_register_limit(self, http_request):
email = 'override-user@example.com'
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': email}))
http_request.return_value = FakeResponse(200,
json.dumps({'status': 'okay',
'email': email}))
self.client.cookies['reg_override_token'] = 'mozilla'
res = self.client.post(reverse('users.browserid_login'),
data=dict(assertion='fake-assertion',
Expand All @@ -725,11 +732,12 @@ def test_override_browserid_register_limit(self, http_request):
@patch.object(settings, 'REGISTER_USER_LIMIT', 1)
@patch.object(settings, 'REGISTER_OVERRIDE_TOKEN', 'mozilla')
@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_override_browserid_register_wrong_token(self, http_request):
email = 'override-user@example.com'
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': email}))
http_request.return_value = FakeResponse(200,
json.dumps({'status': 'okay',
'email': email}))
self.client.cookies['reg_override_token'] = 'netscape'
res = self.client.post(reverse('users.browserid_login'),
data=dict(assertion='fake-assertion',
Expand All @@ -743,12 +751,13 @@ def test_override_token_sets_cookie(self):
eq_(self.client.cookies['reg_override_token'].value, 'letmein')

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
@patch('requests.post')
def test_browserid_login_failure(self, http_request):
"""
A failure response from BrowserID results in login failure.
"""
http_request.return_value = (200, json.dumps({'status': 'busted'}))
http_request.return_value = FakeResponse(200, json.dumps(
{'status': 'busted'}))
res = self.client.post(reverse('users.browserid_login'),
data=dict(assertion='fake-assertion',
audience='fakeamo.org'))
Expand Down Expand Up @@ -787,11 +796,11 @@ def assert_registration_open(request, extra_context=None, **kwargs):
assert login.called

@patch.object(waffle, 'switch_is_active', lambda x: True)
@patch('httplib2.Http.request')
def test_browserid_duplicate_username(self, http_request):
@patch('requests.post')
def test_browserid_duplicate_username(self, post):
email = 'jbalogh@example.com' # existing
http_request.return_value = (200, json.dumps({'status': 'okay',
'email': email}))
post.return_value = FakeResponse(200, json.dumps({'status': 'okay',
'email': email}))
res = self.client.post(reverse('users.browserid_login'),
data=dict(assertion='fake-assertion',
audience='fakeamo.org'))
Expand Down

0 comments on commit db9cd94

Please sign in to comment.