tests/change_phone: deprecate httmock (#85304)
gitea/authentic/pipeline/head This commit looks good
Details
gitea/authentic/pipeline/head This commit looks good
Details
This commit is contained in:
parent
2e452992c4
commit
27cb40221d
|
@ -16,25 +16,14 @@
|
|||
|
||||
from unittest import mock
|
||||
|
||||
from httmock import HTTMock, remember_called, urlmatch
|
||||
import responses
|
||||
|
||||
from authentic2.models import Attribute, SMSCode, Token
|
||||
|
||||
from .utils import login
|
||||
|
||||
|
||||
@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_change_phone(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
Attribute.objects.get_or_create(
|
||||
name='another_phone',
|
||||
|
@ -50,6 +39,7 @@ def test_change_phone(app, nomail_user, user_ou1, phone_activated_authn, setting
|
|||
assert nomail_user.phone_verified_on is None
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -63,8 +53,7 @@ def test_change_phone(app, nomail_user, user_ou1, phone_activated_authn, setting
|
|||
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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()
|
||||
|
@ -75,6 +64,7 @@ def test_change_phone(app, nomail_user, user_ou1, phone_activated_authn, setting
|
|||
assert nomail_user.phone_verified_on is not None
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_no_password(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
Attribute.objects.get_or_create(
|
||||
name='another_phone',
|
||||
|
@ -88,6 +78,7 @@ def test_change_phone_no_password(app, nomail_user, user_ou1, phone_activated_au
|
|||
nomail_user.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -108,8 +99,7 @@ def test_change_phone_no_password(app, nomail_user, user_ou1, phone_activated_au
|
|||
assert 'Your current phone number is +33122446688.' in resp.text
|
||||
resp.form.set('phone_1', '122446666')
|
||||
assert 'password' not in resp.form.fields
|
||||
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()
|
||||
|
@ -120,6 +110,7 @@ def test_change_phone_no_password(app, nomail_user, user_ou1, phone_activated_au
|
|||
assert nomail_user.phone_verified_on is not None
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_no_password_no_recent_authn(
|
||||
app, nomail_user, user_ou1, phone_activated_authn, settings
|
||||
):
|
||||
|
@ -135,6 +126,7 @@ def test_change_phone_no_password_no_recent_authn(
|
|||
nomail_user.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -162,8 +154,7 @@ def test_change_phone_no_password_no_recent_authn(
|
|||
resp.form.set('phone_1', '122446666')
|
||||
assert 'Your current phone number is +33122446688.' in resp.text
|
||||
assert 'password' not in resp.form.fields
|
||||
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()
|
||||
|
@ -174,6 +165,7 @@ def test_change_phone_no_password_no_recent_authn(
|
|||
assert nomail_user.phone_verified_on is not None
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_nondefault_attribute(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
phone, dummy = Attribute.objects.get_or_create(
|
||||
name='another_phone',
|
||||
|
@ -193,6 +185,7 @@ def test_change_phone_nondefault_attribute(app, nomail_user, user_ou1, phone_act
|
|||
phone_activated_authn.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -205,8 +198,7 @@ def test_change_phone_nondefault_attribute(app, nomail_user, user_ou1, phone_act
|
|||
|
||||
resp.form.set('phone_1', '122666666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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()
|
||||
|
@ -247,10 +239,12 @@ def test_change_phone_wrong_input(app, nomail_user, user_ou1, phone_activated_au
|
|||
assert not Token.objects.count()
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_expired_code(app, nomail_user, user_ou1, phone_activated_authn, settings, freezer):
|
||||
nomail_user.attributes.phone = '+33122446688'
|
||||
nomail_user.save()
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -261,8 +255,7 @@ def test_change_phone_expired_code(app, nomail_user, user_ou1, phone_activated_a
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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.tick(3600) # user did not immediately submit code
|
||||
|
@ -271,10 +264,12 @@ def test_change_phone_expired_code(app, nomail_user, user_ou1, phone_activated_a
|
|||
assert not Token.objects.count()
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_code_modified(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
nomail_user.attributes.phone = '+33122446688'
|
||||
nomail_user.save()
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -285,17 +280,18 @@ def test_change_phone_code_modified(app, nomail_user, user_ou1, phone_activated_
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit()
|
||||
resp = resp.form.submit()
|
||||
location = resp.location[:-5] + 'abcd/' # oops, something went wrong with the url token
|
||||
app.get(location, status=400)
|
||||
assert not Token.objects.count()
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_token_modified(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
nomail_user.attributes.phone = '+33122446688'
|
||||
nomail_user.save()
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -306,8 +302,7 @@ def test_change_phone_token_modified(app, nomail_user, user_ou1, phone_activated
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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('')
|
||||
|
@ -319,6 +314,7 @@ def test_change_phone_token_modified(app, nomail_user, user_ou1, phone_activated
|
|||
assert nomail_user.attributes.phone == '+33122446688'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_identifier_attribute_changed(
|
||||
app, nomail_user, user_ou1, phone_activated_authn, settings
|
||||
):
|
||||
|
@ -332,6 +328,7 @@ def test_change_phone_identifier_attribute_changed(
|
|||
nomail_user.attributes.another_phone = '+33122444444'
|
||||
nomail_user.save()
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -344,8 +341,7 @@ def test_change_phone_identifier_attribute_changed(
|
|||
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
with HTTMock(sms_service_mock):
|
||||
resp = resp.form.submit().follow()
|
||||
resp = resp.form.submit().follow()
|
||||
phone_activated_authn.phone_identifier_field = phone
|
||||
phone_activated_authn.save()
|
||||
code = SMSCode.objects.get()
|
||||
|
@ -359,10 +355,12 @@ def test_change_phone_identifier_attribute_changed(
|
|||
assert nomail_user.attributes.another_phone == '+33122446666'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_change_phone_authn_deactivated(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
nomail_user.attributes.phone = '+33122446688'
|
||||
nomail_user.save()
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
login(
|
||||
app,
|
||||
|
@ -380,8 +378,7 @@ def test_change_phone_authn_deactivated(app, nomail_user, user_ou1, phone_activa
|
|||
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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()
|
||||
|
@ -449,6 +446,7 @@ def test_change_phone_identifier_field_disabled(app, nomail_user, user_ou1, phon
|
|||
app.get('/accounts/change-phone/', status=404)
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_change_already_existing(
|
||||
app, nomail_user, user_ou1, phone_activated_authn, settings, simple_user
|
||||
):
|
||||
|
@ -458,6 +456,7 @@ def test_phone_change_already_existing(
|
|||
simple_user.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -468,14 +467,14 @@ def test_phone_change_already_existing(
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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().maybe_follow()
|
||||
assert resp.pyquery('li.error')[0].text == 'This phone number is already used by another account.'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_change_preempted_during_request(
|
||||
app, nomail_user, user_ou1, phone_activated_authn, settings, simple_user
|
||||
):
|
||||
|
@ -483,6 +482,7 @@ def test_phone_change_preempted_during_request(
|
|||
nomail_user.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
resp = login(
|
||||
app,
|
||||
|
@ -493,8 +493,7 @@ def test_phone_change_preempted_during_request(
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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)
|
||||
# oops, some other user took this number during the change request
|
||||
|
@ -504,6 +503,7 @@ def test_phone_change_preempted_during_request(
|
|||
assert resp.pyquery('li.error')[0].text == 'This phone number is already used by another account.'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_change_lock_identifier_error_token_use(
|
||||
app, nomail_user, user_ou1, phone_activated_authn, settings, monkeypatch
|
||||
):
|
||||
|
@ -513,6 +513,7 @@ def test_phone_change_lock_identifier_error_token_use(
|
|||
nomail_user.save()
|
||||
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
|
||||
def erroneous_lock_identifier(identifier, nowait=False):
|
||||
raise Lock.Error
|
||||
|
@ -526,8 +527,7 @@ def test_phone_change_lock_identifier_error_token_use(
|
|||
)
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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)
|
||||
|
@ -538,8 +538,10 @@ def test_phone_change_lock_identifier_error_token_use(
|
|||
assert nomail_user.attributes.phone == '+33122446688'
|
||||
|
||||
|
||||
@responses.activate
|
||||
def test_phone_change_no_existing_number(app, nomail_user, user_ou1, phone_activated_authn, settings):
|
||||
settings.SMS_URL = 'https://foo.whatever.none/'
|
||||
responses.post('https://foo.whatever.none/', status=200)
|
||||
resp = login(
|
||||
app,
|
||||
nomail_user,
|
||||
|
@ -551,8 +553,7 @@ def test_phone_change_no_existing_number(app, nomail_user, user_ou1, phone_activ
|
|||
assert 'Your phone number is' not in resp.text
|
||||
resp.form.set('phone_1', '122446666')
|
||||
resp.form.set('password', nomail_user.username)
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue