161
161
ctx = response.context_data
162
162
self.assertEqual(ctx['form']['email'].value(), 'test@test.com')
164
@switches(CAPTCHA=False)
165
def test_get_optional_captcha_switch_off(self):
166
response = self.get()
167
self.assertEqual(response.context_data['captcha_required'], False)
169
@switches(CAPTCHA=True, CAPTCHA_NEW_ACCOUNT=True)
170
def test_get_optional_captcha_switch_on(self):
171
response = self.get()
172
self.assertEqual(response.context_data['captcha_required'], True)
174
164
def test_post_required_fields(self):
175
165
response = self.post()
176
166
self.assert_form_displayed(
213
203
email=self.TESTDATA['email'],
214
204
password=self.TESTDATA['password'],
215
205
displayname=self.TESTDATA['displayname'],
217
captcha_solution=None,
218
create_captcha=False,
219
206
creation_source=WEB_CREATION_SOURCE,
242
229
password=self.TESTDATA['password'],
243
230
displayname=self.TESTDATA['displayname'],
244
231
username=self.TESTDATA['username'],
246
captcha_solution=None,
247
create_captcha=False,
248
232
creation_source=WEB_CREATION_SOURCE,
250
234
self.TESTDATA.pop('username')
337
321
expected_args = dict(email=self.TESTDATA['email'],
338
322
password=self.TESTDATA['password'],
339
323
displayname=self.TESTDATA['displayname'],
340
create_captcha=False,
341
captcha_solution=None,
343
324
creation_source='web-flow',
345
326
self.mock_api_register.assert_called_once_with(**expected_args)
351
332
self.assert_form_displayed(response, email=VERIFY_EMAIL_MESSAGE)
352
333
self.assert_stat_calls(['error.email'])
354
def test_post_captcha_required(self):
355
exc = api_errors.CaptchaRequired(Mock())
356
self.mock_api_register.side_effect = exc
357
response = self.post(**self.TESTDATA)
358
self.assert_form_displayed(response)
359
self.assertEqual(response.context_data['captcha_required'], True)
361
def test_post_captcha_failure(self):
362
mock_response = Mock()
363
body = {'extra': {'captcha_message': 'XXX'}}
364
exc = api_errors.CaptchaFailure(mock_response, body)
365
self.mock_api_register.side_effect = exc
367
response = self.post(**self.TESTDATA)
368
self.assert_form_displayed(response)
369
self.assertEqual(response.context_data['captcha_required'], True)
371
response.context_data['captcha_error'],
373
self.assert_stat_calls(['error.captcha'])
375
def test_post_captcha_error(self):
376
mock_response = Mock()
378
exc = api_errors.CaptchaError(mock_response, body)
379
self.mock_api_register.side_effect = exc
381
response = self.post(**self.TESTDATA)
382
self.assert_form_displayed(response)
383
self.assertEqual(response.context_data['captcha_required'], True)
384
self.assert_stat_calls(['error.captcha'])
387
336
class RegisterTimelineTestCase(
388
337
SSOBaseTestCase, RegisterTestMixin, TimelineActionMixin):
633
582
self.assertEqual(response.status_code, 405)
585
@switches(TWOFACTOR=True)
636
586
class TwoFactorSyncTestCase(SSOBaseTestCase):
637
587
"""Tests for 2fa OTP synchronization."""
656
606
email = self.email
657
607
data = {'email': email, 'password': DEFAULT_USER_PASSWORD}
658
608
url = reverse('login')
659
return self.client.post(url, data)
609
response = self.client.post(url, data)
610
self.assertRedirects(response, reverse('account-index'))
661
613
def test_shows_all_fields_for_synchronization(self):
662
614
self.factory.make_account(email=self.email)