0001-tests-move-users-manager-tests-45009.patch
tests/test_manager.py | ||
---|---|---|
56 | 56 |
path = reverse('a2-manager-%s' % section) |
57 | 57 |
assert manager_home_page.pyquery.remove_namespaces()('.apps a[href=\'%s\']' % path) |
58 | 58 | |
59 | ||
59 | 60 |
def test_manager_create_ou(superuser_or_admin, app): |
60 | 61 |
ou_add = login(app, superuser_or_admin, path=reverse('a2-manager-ou-add')) |
61 | 62 |
form = ou_add.form |
... | ... | |
761 | 762 |
assert response.request.query_string == 'next=/manage/' |
762 | 763 | |
763 | 764 | |
764 |
def test_manager_create_user_next(superuser_or_admin, app, ou1): |
|
765 |
login(app, superuser_or_admin, '/manage/') |
|
766 | ||
767 |
next_url = u'/example.nowhere.null/' |
|
768 |
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url) |
|
769 |
response = app.get(url) |
|
770 | ||
771 |
# cancel is not handled through form submission, it's a link |
|
772 |
# next without cancel, no cancel button |
|
773 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == '../..' |
|
774 |
assert response.pyquery.remove_namespaces()('input[name="next"]').attr('value') == next_url |
|
775 | ||
776 |
next_url = u'/example.nowhere.null/$UUID/' |
|
777 |
cancel_url = u'/example.nowhere.cancel/' |
|
778 |
url = u'/manage/users/%s/add/?next=%s&cancel=%s' % (ou1.pk, next_url, cancel_url) |
|
779 |
response = app.get(url) |
|
780 | ||
781 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == cancel_url |
|
782 |
assert response.pyquery.remove_namespaces()('input[name="next"]').attr('value') == next_url |
|
783 | ||
784 |
form = response.form |
|
785 |
form.set('first_name', 'John') |
|
786 |
form.set('last_name', 'Doe') |
|
787 |
form.set('email', 'john.doe@gmail.com') |
|
788 |
form.set('password1', 'ABcd1234') |
|
789 |
form.set('password2', 'ABcd1234') |
|
790 |
response = form.submit() |
|
791 |
user = User.objects.latest('id') |
|
792 |
assert urlparse(response.location).path == next_url.replace('$UUID', str(user.uuid)) |
|
793 | ||
794 | ||
795 |
def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1): |
|
796 |
next_url = u'/example.nowhere.null/' |
|
797 |
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url) |
|
798 |
login(app, superuser_or_admin, '/manage/') |
|
799 |
response = app.get(url) |
|
800 |
form = response.form |
|
801 |
form.set('first_name', 'John') |
|
802 |
form.set('last_name', 'Doe') |
|
803 |
form.set('email', 'jd') # erroneous |
|
804 |
form.set('password1', 'notvalid') # erroneous |
|
805 |
assert force_bytes('<input type="hidden" name="next" value="%s">' % next_url) in form.submit().body |
|
806 | ||
807 | ||
808 |
def test_manager_add_user_querystring(superuser_or_admin, app, ou1): |
|
809 |
querystring = u'stay_here=true' |
|
810 |
url = u'/manage/users/add/?%s' % querystring |
|
811 |
login(app, superuser_or_admin, '/manage/') |
|
812 |
response = app.get(url) |
|
813 | ||
814 |
assert querystring in response.location |
|
815 | ||
816 | ||
817 |
def test_manager_edit_user_next(app, simple_user, superuser_or_admin): |
|
818 |
next_url = u'/example.nowhere.null/' |
|
819 |
url = u'/manage/users/%s/edit/?next=%s' % (simple_user.pk, next_url) |
|
820 |
login(app, superuser_or_admin, '/manage/') |
|
821 |
response = app.get(url) |
|
822 | ||
823 |
# cancel if not handled through form submission |
|
824 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == next_url |
|
825 | ||
826 |
form = response.form |
|
827 |
form.set('last_name', 'New name') |
|
828 |
assert urlparse(form.submit().location).path == next_url |
|
829 | ||
830 | ||
831 |
def test_manager_edit_user_next_form_error(superuser_or_admin, app, ou1, simple_user): |
|
832 |
next_url = u'/example.nowhere.null/' |
|
833 |
url = u'/manage/users/%s/edit/?next=%s' % (simple_user.pk, next_url) |
|
834 |
login(app, superuser_or_admin, '/manage/') |
|
835 |
response = app.get(url) |
|
836 |
form = response.form |
|
837 |
form.set('email', 'jd') # erroneous |
|
838 |
resp = form.submit() |
|
839 |
assert '<input type="hidden" name="next" value="%s">' % next_url in resp.ubody |
|
840 | ||
841 | ||
842 | 765 |
def test_roles_widget(admin, app, db): |
843 | 766 |
from authentic2.manager.forms import ChooseRoleForm |
844 | 767 | |
... | ... | |
883 | 806 |
assert len(response.json['results']) == 1 |
884 | 807 | |
885 | 808 | |
886 |
def test_user_add_settings(settings, admin, app, db): |
|
887 |
passwd_options = ('generate_password', 'reset_password_at_next_login', |
|
888 |
'send_mail', 'send_password_reset') |
|
889 |
for policy in [choice[0] for choice in OU.USER_ADD_PASSWD_POLICY_CHOICES]: |
|
890 |
ou = get_default_ou() |
|
891 |
ou.user_add_password_policy = policy |
|
892 |
ou.save() |
|
893 |
user_add = login(app, admin, '/manage/users/add/').follow() |
|
894 |
for option, i in zip(passwd_options, range(4)): |
|
895 |
assert (user_add.form.get(option).value |
|
896 |
== {False: None, True: 'on'}.get(OU.USER_ADD_PASSWD_POLICY_VALUES[policy][i])) |
|
897 |
app.get('/logout/').form.submit() |
|
898 | ||
899 | ||
900 |
def test_ou_hide_username(admin, app, db): |
|
901 |
some_ou = OU.objects.create(name=u'Some Ou', show_username=False) |
|
902 | ||
903 |
login(app, admin, '/manage/') |
|
904 |
url = u'/manage/users/%s/add/' % some_ou.pk |
|
905 |
response = app.get(url) |
|
906 |
q = response.pyquery.remove_namespaces() |
|
907 |
assert len(q('p[id="id_username_p"]')) == 0 |
|
908 | ||
909 |
form = response.form |
|
910 |
form.set('first_name', 'John') |
|
911 |
form.set('last_name', 'Doe') |
|
912 |
form.set('email', 'john.doe@gmail.com') |
|
913 |
form.set('password1', 'ABcd1234') |
|
914 |
form.set('password2', 'ABcd1234') |
|
915 |
form.submit() |
|
916 | ||
917 |
assert User.objects.get(email='john.doe@gmail.com') |
|
918 | ||
919 | ||
920 |
def test_manager_edit_user_email_verified(app, simple_user, superuser_or_admin): |
|
921 |
simple_user.email_verified = True |
|
922 |
simple_user.save() |
|
923 | ||
924 |
url = u'/manage/users/%s/edit/' % simple_user.pk |
|
925 |
login(app, superuser_or_admin, '/manage/') |
|
926 | ||
927 |
user = User.objects.get(id=simple_user.id) |
|
928 |
assert user.email_verified |
|
929 | ||
930 |
response = app.get(url) |
|
931 |
form = response.form |
|
932 |
form.set('email', 'new.email@gmail.net') |
|
933 |
response = form.submit().follow() |
|
934 | ||
935 |
user = User.objects.get(id=simple_user.id) |
|
936 |
assert not user.email_verified |
|
937 | ||
938 | ||
939 | 809 |
def test_manager_ajax_form_view_mixin_response(superuser_or_admin, app): |
940 | 810 |
app.set_user(superuser_or_admin.username) |
941 | 811 |
resp = app.get('/manage/roles/add/', xhr=True, status=200) |
... | ... | |
1004 | 874 |
url = '/manage/roles/%s/remove-parent/%s/' % (role.pk, simple_role.pk) |
1005 | 875 |
token = str(response.context['csrf_token']) |
1006 | 876 |
app.post(url, params={'csrfmiddlewaretoken': token}) |
1007 |
assert not simple_role in role.parents()
|
|
877 |
assert simple_role not in role.parents()
|
|
1008 | 878 | |
1009 | 879 |
# user roles view works |
1010 | 880 |
response = app.get('/manage/users/%s/roles/' % admin.pk) |
... | ... | |
1118 | 988 |
return set(result['id'] for result in select2_json['results']) |
1119 | 989 | |
1120 | 990 |
visible_role = Role.objects.create(name='visible_role', ou=simple_user.ou) |
1121 |
invisible_role = Role.objects.create(name='invisible_role', ou=simple_user.ou)
|
|
991 |
Role.objects.create(name='invisible_role', ou=simple_user.ou) |
|
1122 | 992 |
admin_of_simple_role = simple_role.get_admin_role() |
1123 | 993 | |
1124 | 994 |
admin_of_simple_role.members.add(simple_user) |
tests/test_user_manager.py | ||
---|---|---|
20 | 20 |
import csv |
21 | 21 |
import re |
22 | 22 |
import time |
23 |
from urllib.parse import urlparse |
|
23 | 24 | |
24 | 25 |
import pytest |
25 | 26 |
from webtest import Upload |
... | ... | |
263 | 264 |
User.objects.bulk_create(users) |
264 | 265 |
users = list(User.objects.filter(username__startswith='user')) |
265 | 266 | |
266 |
user_ct = ContentType.objects.get_for_model(User)
|
|
267 |
ContentType.objects.get_for_model(User) |
|
267 | 268 |
atvs = [] |
268 | 269 |
for i in range(USER_COUNT): |
269 | 270 |
atvs.extend([AttributeValue( |
... | ... | |
277 | 278 |
# overspending memory for the queryset cache, 4 queries by batches |
278 | 279 |
num_queries = int(4 + 4 * (user_count / DEFAULT_BATCH_SIZE + bool(user_count % DEFAULT_BATCH_SIZE))) |
279 | 280 |
with django_assert_num_queries(num_queries): |
280 |
response = response.click('CSV')
|
|
281 |
response = response.click('CSV') |
|
281 | 282 |
table = list(csv.reader(response.text.splitlines())) |
282 | 283 |
assert len(table) == (user_count + 1) |
283 | 284 |
assert len(table[0]) == (15 + AT_COUNT) |
... | ... | |
512 | 513 |
user_count = User.objects.count() |
513 | 514 |
login(app, admin, '/manage/users/') |
514 | 515 | |
515 | ||
516 | 516 |
csv_lines = [ |
517 | 517 |
u"email key verified,first_name,last_name,more,title,bike,saintsday,birthdate,zip,phone", |
518 | 518 |
u"elliot@universalpictures.com,Elliott,Thomas,petit,Mr,True,2019-7-20,1972-05-26,75014,1234", |
... | ... | |
573 | 573 |
response = import_csv(content, app) |
574 | 574 | |
575 | 575 |
assert len(response.pyquery('table.main tbody tr.row-invalid')) == 1 |
576 | ||
577 | ||
578 |
def test_manager_create_user_next(superuser_or_admin, app, ou1): |
|
579 |
login(app, superuser_or_admin, '/manage/') |
|
580 | ||
581 |
next_url = u'/example.nowhere.null/' |
|
582 |
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url) |
|
583 |
response = app.get(url) |
|
584 | ||
585 |
# cancel is not handled through form submission, it's a link |
|
586 |
# next without cancel, no cancel button |
|
587 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == '../..' |
|
588 |
assert response.pyquery.remove_namespaces()('input[name="next"]').attr('value') == next_url |
|
589 | ||
590 |
next_url = u'/example.nowhere.null/$UUID/' |
|
591 |
cancel_url = u'/example.nowhere.cancel/' |
|
592 |
url = u'/manage/users/%s/add/?next=%s&cancel=%s' % (ou1.pk, next_url, cancel_url) |
|
593 |
response = app.get(url) |
|
594 | ||
595 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == cancel_url |
|
596 |
assert response.pyquery.remove_namespaces()('input[name="next"]').attr('value') == next_url |
|
597 | ||
598 |
form = response.form |
|
599 |
form.set('first_name', 'John') |
|
600 |
form.set('last_name', 'Doe') |
|
601 |
form.set('email', 'john.doe@gmail.com') |
|
602 |
form.set('password1', 'ABcd1234') |
|
603 |
form.set('password2', 'ABcd1234') |
|
604 |
response = form.submit() |
|
605 |
user = User.objects.latest('id') |
|
606 |
assert urlparse(response.location).path == next_url.replace('$UUID', str(user.uuid)) |
|
607 | ||
608 | ||
609 |
def test_manager_create_user_next_form_error(superuser_or_admin, app, ou1): |
|
610 |
next_url = u'/example.nowhere.null/' |
|
611 |
url = u'/manage/users/%s/add/?next=%s' % (ou1.pk, next_url) |
|
612 |
login(app, superuser_or_admin, '/manage/') |
|
613 |
response = app.get(url) |
|
614 |
form = response.form |
|
615 |
form.set('first_name', 'John') |
|
616 |
form.set('last_name', 'Doe') |
|
617 |
form.set('email', 'jd') # erroneous |
|
618 |
form.set('password1', 'notvalid') # erroneous |
|
619 |
assert '<input type="hidden" name="next" value="%s">' % next_url in form.submit().text |
|
620 | ||
621 | ||
622 |
def test_manager_add_user_querystring(superuser_or_admin, app, ou1): |
|
623 |
querystring = u'stay_here=true' |
|
624 |
url = u'/manage/users/add/?%s' % querystring |
|
625 |
login(app, superuser_or_admin, '/manage/') |
|
626 |
response = app.get(url) |
|
627 | ||
628 |
assert querystring in response.location |
|
629 | ||
630 | ||
631 |
def test_manager_edit_user_next(app, simple_user, superuser_or_admin): |
|
632 |
next_url = u'/example.nowhere.null/' |
|
633 |
url = u'/manage/users/%s/edit/?next=%s' % (simple_user.pk, next_url) |
|
634 |
login(app, superuser_or_admin, '/manage/') |
|
635 |
response = app.get(url) |
|
636 | ||
637 |
# cancel if not handled through form submission |
|
638 |
assert response.pyquery.remove_namespaces()('a.cancel').attr('href') == next_url |
|
639 | ||
640 |
form = response.form |
|
641 |
form.set('last_name', 'New name') |
|
642 |
assert urlparse(form.submit().location).path == next_url |
|
643 | ||
644 | ||
645 |
def test_manager_edit_user_next_form_error(superuser_or_admin, app, ou1, simple_user): |
|
646 |
next_url = u'/example.nowhere.null/' |
|
647 |
url = u'/manage/users/%s/edit/?next=%s' % (simple_user.pk, next_url) |
|
648 |
login(app, superuser_or_admin, '/manage/') |
|
649 |
response = app.get(url) |
|
650 |
form = response.form |
|
651 |
form.set('email', 'jd') # erroneous |
|
652 |
resp = form.submit() |
|
653 |
assert '<input type="hidden" name="next" value="%s">' % next_url in resp.ubody |
|
654 | ||
655 | ||
656 |
def test_user_add_settings(settings, admin, app, db): |
|
657 |
passwd_options = ('generate_password', 'reset_password_at_next_login', |
|
658 |
'send_mail', 'send_password_reset') |
|
659 |
for policy in [choice[0] for choice in OU.USER_ADD_PASSWD_POLICY_CHOICES]: |
|
660 |
ou = get_default_ou() |
|
661 |
ou.user_add_password_policy = policy |
|
662 |
ou.save() |
|
663 |
user_add = login(app, admin, '/manage/users/add/').follow() |
|
664 |
for option, i in zip(passwd_options, range(4)): |
|
665 |
assert (user_add.form.get(option).value |
|
666 |
== {False: None, True: 'on'}.get(OU.USER_ADD_PASSWD_POLICY_VALUES[policy][i])) |
|
667 |
app.get('/logout/').form.submit() |
|
668 | ||
669 | ||
670 |
def test_ou_hide_username(admin, app, db): |
|
671 |
some_ou = OU.objects.create(name=u'Some Ou', show_username=False) |
|
672 | ||
673 |
login(app, admin, '/manage/') |
|
674 |
url = u'/manage/users/%s/add/' % some_ou.pk |
|
675 |
response = app.get(url) |
|
676 |
q = response.pyquery.remove_namespaces() |
|
677 |
assert len(q('p[id="id_username_p"]')) == 0 |
|
678 | ||
679 |
form = response.form |
|
680 |
form.set('first_name', 'John') |
|
681 |
form.set('last_name', 'Doe') |
|
682 |
form.set('email', 'john.doe@gmail.com') |
|
683 |
form.set('password1', 'ABcd1234') |
|
684 |
form.set('password2', 'ABcd1234') |
|
685 |
form.submit() |
|
686 | ||
687 |
assert User.objects.get(email='john.doe@gmail.com') |
|
688 | ||
689 | ||
690 |
def test_manager_edit_user_email_verified(app, simple_user, superuser_or_admin): |
|
691 |
simple_user.email_verified = True |
|
692 |
simple_user.save() |
|
693 | ||
694 |
url = u'/manage/users/%s/edit/' % simple_user.pk |
|
695 |
login(app, superuser_or_admin, '/manage/') |
|
696 | ||
697 |
user = User.objects.get(id=simple_user.id) |
|
698 |
assert user.email_verified |
|
699 | ||
700 |
response = app.get(url) |
|
701 |
form = response.form |
|
702 |
form.set('email', 'new.email@gmail.net') |
|
703 |
response = form.submit().follow() |
|
704 | ||
705 |
user = User.objects.get(id=simple_user.id) |
|
706 |
assert not user.email_verified |
|
576 |
- |