From 6711f10e748c2ba959008cb408b2a75fa0e300e3 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 19 May 2020 12:24:50 +0200 Subject: [PATCH 1/5] tests: add tests on user creation trough manager (#43074) --- tests/test_manager.py | 11 ++-- tests/test_user_manager.py | 126 +++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 4 deletions(-) diff --git a/tests/test_manager.py b/tests/test_manager.py index 133e4274..4c34e920 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -15,6 +15,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . +from __future__ import unicode_literals + import pytest import json @@ -236,7 +238,7 @@ def test_manager_create_user(superuser_or_admin, app, settings): form.set('password2', 'ABcd1234') response = form.submit() assert User.objects.filter(ou=ou2).count() == 1 - assert 'Email already used' in response + assert 'This email address is already in use.' in response # create first user with john.doe2@gmail.com ou OU2 : OK ou_add = app.get(url) @@ -253,7 +255,7 @@ def test_manager_create_user(superuser_or_admin, app, settings): # john.doe@gmail.com in OU2 : NOK response.form.set('email', 'john.doe@gmail.com') response = form.submit() - assert 'Email already used' in response + assert 'This email address is already in use.' in response # create first user with email john.doe@gmail.com in OU1: NOK settings.A2_EMAIL_IS_UNIQUE = True @@ -269,7 +271,8 @@ def test_manager_create_user(superuser_or_admin, app, settings): form.set('password2', 'ABcd1234') response = form.submit() assert User.objects.filter(ou=ou1).count() == 0 - assert 'Email already used' in response + assert 'This email address is already in use.' in response + form = response.form form.set('email', 'john.doe3@gmail.com') form.set('password1', 'ABcd1234') @@ -281,7 +284,7 @@ def test_manager_create_user(superuser_or_admin, app, settings): # john.doe@gmail.com in OU2 : NOK response.form.set('email', 'john.doe@gmail.com') response = form.submit() - assert 'Email already used' in response + assert 'This email address is already in use.' in response # check redirect to default ou url1 = reverse('a2-manager-user-add-default-ou') diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index 57341386..91bdc5fa 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -14,6 +14,9 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . + +from __future__ import unicode_literals + import csv import re import time @@ -42,6 +45,129 @@ def visible_users(response): return set(elt.text for elt in response.pyquery('td.username')) +def test_create_user(app, superuser): + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('username', 'john.doe') + response.form.set('email', 'john.doe@example.com') + response.form.set('first_name', 'Jôhn') + response.form.set('last_name', 'Döe') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + user = User.objects.exclude(id=superuser.id).get() + assert user.ou == get_default_ou() + assert user.username == 'john.doe' + assert user.email == 'john.doe@example.com' + assert user.first_name == 'Jôhn' + assert user.last_name == 'Döe' + assert user.check_password('1234Password') + + +def test_create_user_only_name(app, superuser): + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('first_name', 'Jôhn') + response.form.set('last_name', 'Döe') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + + +def test_create_user_only_email(app, superuser): + Attribute.objects.update(required=False) + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('email', 'john.doe@example.com') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + + +def test_create_user_only_username(app, superuser): + Attribute.objects.update(required=False) + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('username', 'john.doe') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + + +def test_create_user_no_identifier(app, superuser): + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=200) + assert User.objects.count() == 1 + assert 'An account needs at least one identifier.' in response + + +def test_create_user_username_is_unique(app, superuser, settings): + settings.A2_USERNAME_IS_UNIQUE = True + Attribute.objects.update(required=False) + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('username', 'john.doe') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + + # try again + response = app.get('/manage/users/') + response = response.click('Add user') + response.form.set('username', 'john.doe') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=200) + assert User.objects.count() == 2 + assert 'This username is already in use' in response + + +def test_create_user_email_is_unique(app, superuser, settings): + settings.A2_EMAIL_IS_UNIQUE = True + Attribute.objects.update(required=False) + response = login(app, superuser, '/manage/users/') + response = response.click('Add user') + assert User.objects.count() == 1 + response.form.set('email', 'john.doe@example.com') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=302) + assert User.objects.count() == 2 + + # try again + response = app.get('/manage/users/') + response = response.click('Add user') + response.form.set('email', 'john.doe@example.com') + response.form.set('password1', '1234Password') + response.form.set('password2', '1234Password') + response.form.set('send_password_reset', False) + response = response.form.submit(status=200) + assert User.objects.count() == 2 + assert 'This email address is already in use' in response + + def test_manager_user_change_email(app, superuser_or_admin, simple_user, mailoutbox): ou = get_default_ou() ou.validate_emails = True -- 2.26.2