tests/registration: deprecate httmock (#85304)
This commit is contained in:
parent
047e6f5d3c
commit
20c1bc913b
|
@ -20,9 +20,9 @@ from unittest import mock
|
|||
from urllib.parse import quote, urlparse
|
||||
|
||||
import requests
|
||||
import responses
|
||||
from django.contrib.auth import REDIRECT_FIELD_NAME, get_user_model
|
||||
from django.urls import reverse
|
||||
from httmock import HTTMock, remember_called, urlmatch
|
||||
|
||||
from authentic2 import models
|
||||
from authentic2.a2_rbac.utils import get_default_ou
|
||||
|
@ -1012,38 +1012,28 @@ def test_registration_erroneous_phone_identifier(app, db, settings, phone_activa
|
|||
)
|
||||
|
||||
|
||||
@urlmatch(netloc='foo.whatever.none')
|
||||
@remember_called
|
||||
def sms_service_mock(url, request):
|
||||
return {
|
||||
'content': {},
|
||||
'headers': {
|
||||
'content-type': 'application/json',
|
||||
},
|
||||
'status_code': 200,
|
||||
}
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_wrong_code(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
resp.form.set('sms_code', 'abc')
|
||||
resp = resp.form.submit()
|
||||
assert not Token.objects.count()
|
||||
assert resp.pyquery('li')[0].text_content() == 'Wrong SMS code.'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_expired_code(app, db, settings, freezer, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
freezer.move_to(timedelta(hours=1))
|
||||
|
@ -1052,13 +1042,14 @@ def test_phone_registration_expired_code(app, db, settings, freezer, phone_activ
|
|||
assert resp.pyquery('li')[0].text_content() == 'The code has expired.'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_cancel(app, db, settings, freezer, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp.form.submit('cancel').follow()
|
||||
|
@ -1066,13 +1057,14 @@ def test_phone_registration_cancel(app, db, settings, freezer, phone_activated_a
|
|||
assert not SMSCode.objects.count()
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_improperly_configured(app, db, settings, freezer, caplog, phone_activated_authn):
|
||||
settings.SMS_URL = ''
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow().maybe_follow()
|
||||
resp = resp.form.submit().follow().maybe_follow()
|
||||
assert not Token.objects.count()
|
||||
assert not SMSCode.objects.count()
|
||||
assert (
|
||||
|
@ -1105,8 +1097,10 @@ def test_phone_registration_connection_error(app, db, settings, freezer, caplog,
|
|||
)
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_number_already_existing_create(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
# create duplicates
|
||||
for i in range(3):
|
||||
|
@ -1122,8 +1116,7 @@ def test_phone_registration_number_already_existing_create(app, db, settings, ph
|
|||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit()
|
||||
|
@ -1148,8 +1141,10 @@ def test_phone_registration_number_already_existing_create(app, db, settings, ph
|
|||
assert User.objects.filter(first_name='John', last_name='Doe').count() == 4
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_number_already_existing_select(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
user_ids = []
|
||||
|
||||
|
@ -1168,8 +1163,7 @@ def test_phone_registration_number_already_existing_select(app, db, settings, ph
|
|||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
@ -1185,8 +1179,10 @@ def test_phone_registration_number_already_existing_select(app, db, settings, ph
|
|||
assert app.session['_auth_user_id'] == str(user_ids[1])
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_number_already_existing_phone_is_unique(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
settings.A2_PHONE_IS_UNIQUE = True
|
||||
settings.A2_REGISTRATION_PHONE_IS_UNIQUE = True
|
||||
|
||||
|
@ -1203,8 +1199,7 @@ def test_phone_registration_number_already_existing_phone_is_unique(app, db, set
|
|||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
@ -1214,10 +1209,12 @@ def test_phone_registration_number_already_existing_phone_is_unique(app, db, set
|
|||
assert resp.location == '/'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_number_already_existing_registration_phone_is_unique(
|
||||
app, db, settings, phone_activated_authn
|
||||
):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
settings.A2_PHONE_IS_UNIQUE = False
|
||||
settings.A2_REGISTRATION_PHONE_IS_UNIQUE = True
|
||||
|
||||
|
@ -1237,8 +1234,7 @@ def test_phone_registration_number_already_existing_registration_phone_is_unique
|
|||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
@ -1249,10 +1245,12 @@ def test_phone_registration_number_already_existing_registration_phone_is_unique
|
|||
assert resp.location == '/'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_number_already_existing_ou_phone_is_unique(
|
||||
app, db, settings, phone_activated_authn
|
||||
):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
settings.A2_PHONE_IS_UNIQUE = False
|
||||
settings.A2_REGISTRATION_PHONE_IS_UNIQUE = False
|
||||
ou = get_default_ou()
|
||||
|
@ -1275,8 +1273,7 @@ def test_phone_registration_number_already_existing_ou_phone_is_unique(
|
|||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
@ -1287,17 +1284,18 @@ def test_phone_registration_number_already_existing_ou_phone_is_unique(
|
|||
assert resp.location == '/'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
rsps = responses.post('https://foo.whatever.none/', status=200)
|
||||
code_length = settings.SMS_CODE_LENGTH
|
||||
|
||||
assert not SMSCode.objects.count()
|
||||
assert not Token.objects.count()
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
body = json.loads(sms_service_mock.call['requests'][0].body)
|
||||
resp = resp.form.submit().follow()
|
||||
body = json.loads(rsps.calls[-1].request.body)
|
||||
assert body['message'].startswith('Your code is')
|
||||
code = SMSCode.objects.get()
|
||||
assert body['message'][-code_length:] == code.value
|
||||
|
@ -1320,6 +1318,7 @@ def test_phone_registration(app, db, settings, phone_activated_authn):
|
|||
assert not user.email_verified
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_nondefault_attribute(app, db, settings):
|
||||
phone, dummy = models.Attribute.objects.get_or_create(
|
||||
name='another_phone',
|
||||
|
@ -1331,12 +1330,12 @@ def test_phone_registration_nondefault_attribute(app, db, settings):
|
|||
phone_identifier_field=phone,
|
||||
)
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
rsps = responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get(reverse('registration_register'))
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
json.loads(sms_service_mock.call['requests'][0].body)
|
||||
resp = resp.form.submit().follow()
|
||||
json.loads(rsps.calls[-1].request.body)
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
@ -1355,14 +1354,15 @@ def test_phone_registration_nondefault_attribute(app, db, settings):
|
|||
assert not user.phone
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_registration_redirect_url(app, db, settings, phone_activated_authn):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = app.get('/accounts/consents/').follow()
|
||||
resp = resp.click('Register!')
|
||||
resp.form.set('phone_1', '612345678')
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
code = SMSCode.objects.get()
|
||||
resp.form.set('sms_code', code.value)
|
||||
resp = resp.form.submit().follow()
|
||||
|
|
Loading…
Reference in New Issue