18 |
18 |
|
19 |
19 |
pytestmark = pytest.mark.django_db
|
20 |
20 |
|
|
21 |
OU = get_ou_model()
|
|
22 |
User = get_user_model()
|
|
23 |
Role = get_role_model()
|
|
24 |
|
21 |
25 |
|
22 |
26 |
def test_manager_login(superuser_or_admin, app):
|
23 |
27 |
manager_home_page = login(app, superuser_or_admin, reverse('a2-manager-homepage'))
|
... | ... | |
37 |
41 |
|
38 |
42 |
|
39 |
43 |
def test_manager_create_ou(superuser_or_admin, app):
|
40 |
|
OU = get_ou_model()
|
41 |
|
|
42 |
44 |
ou_add = login(app, superuser_or_admin, path=reverse('a2-manager-ou-add'))
|
43 |
45 |
form = ou_add.form
|
44 |
46 |
form.set('name', 'New OU')
|
... | ... | |
62 |
64 |
from authentic2.manager.utils import get_ou_count
|
63 |
65 |
get_ou_count.cache.cache = {}
|
64 |
66 |
|
65 |
|
Role = get_role_model()
|
66 |
|
OU = get_ou_model()
|
67 |
|
|
68 |
67 |
non_admin_roles = Role.objects.exclude(slug__startswith='_')
|
69 |
68 |
|
70 |
69 |
ou_add = login(app, superuser_or_admin, reverse('a2-manager-role-add'))
|
... | ... | |
78 |
77 |
role = non_admin_roles.get()
|
79 |
78 |
assert response.request.path == reverse('a2-manager-role-members', kwargs={'pk': role.pk})
|
80 |
79 |
role_list = app.get(reverse('a2-manager-roles'))
|
81 |
|
assert 'New role' in role_list
|
|
80 |
assert 'New role' in role_list
|
82 |
81 |
|
83 |
82 |
# Test slug collision
|
84 |
83 |
non_admin_roles.update(name='Old role')
|
85 |
84 |
response = form.submit().follow()
|
86 |
85 |
role_list = app.get(reverse('a2-manager-roles'))
|
87 |
|
assert 'New role' in role_list
|
|
86 |
assert 'New role' in role_list
|
88 |
87 |
assert 'Old role' in role_list
|
89 |
88 |
assert non_admin_roles.count() == 2
|
90 |
89 |
assert non_admin_roles.get(name='New role').slug == 'new-role1'
|
... | ... | |
135 |
134 |
|
136 |
135 |
|
137 |
136 |
def test_manager_stress_create_user(superuser_or_admin, app, mailoutbox):
|
138 |
|
User = get_user_model()
|
139 |
|
OU = get_ou_model()
|
140 |
|
|
141 |
137 |
new_ou = OU.objects.create(name='new ou', slug='new-ou')
|
142 |
138 |
url = reverse('a2-manager-user-add', kwargs={'ou_pk': new_ou.pk})
|
143 |
139 |
# create first user with john.doe@gmail.com ou OU1 : OK
|
... | ... | |
160 |
156 |
|
161 |
157 |
|
162 |
158 |
def test_role_members_from_ou(app, superuser, settings):
|
163 |
|
Role = get_role_model()
|
164 |
159 |
r = Role.objects.create(name='role', slug='role', ou=get_default_ou())
|
165 |
160 |
url = reverse('a2-manager-role-members', kwargs={'pk': r.pk})
|
166 |
161 |
response = login(app, superuser, url)
|
... | ... | |
171 |
166 |
|
172 |
167 |
|
173 |
168 |
def test_role_members_show_all_ou(app, superuser, settings):
|
174 |
|
Role = get_role_model()
|
175 |
169 |
r = Role.objects.create(name='role', slug='role', ou=get_default_ou())
|
176 |
170 |
url = reverse('a2-manager-role-members', kwargs={'pk': r.pk})
|
177 |
171 |
response = login(app, superuser, url)
|
... | ... | |
186 |
180 |
from authentic2.manager.utils import get_ou_count
|
187 |
181 |
get_ou_count.cache.clear()
|
188 |
182 |
|
189 |
|
User = get_user_model()
|
190 |
|
OU = get_ou_model()
|
191 |
183 |
ou1 = OU.objects.create(name='OU1', slug='ou1')
|
192 |
184 |
ou2 = OU.objects.create(name='OU2', slug='ou2', email_is_unique=True)
|
193 |
185 |
|
... | ... | |
292 |
284 |
resp = app.get(url1)
|
293 |
285 |
assert urlparse(resp['Location']).path == url2
|
294 |
286 |
|
|
287 |
|
295 |
288 |
def test_app_setting_login_url(app, settings):
|
296 |
289 |
settings.A2_MANAGER_LOGIN_URL = '/other_login/'
|
297 |
290 |
response = app.get('/manage/')
|
... | ... | |
567 |
560 |
|
568 |
561 |
|
569 |
562 |
def test_manager_search_user(app, admin, simple_role, settings):
|
570 |
|
User = get_user_model()
|
571 |
|
OU = get_ou_model()
|
572 |
563 |
default_ou = OU.objects.get()
|
573 |
564 |
User.objects.create(username='user1', ou=default_ou)
|
574 |
565 |
response = login(app, admin, '/manage/users/')
|
... | ... | |
641 |
632 |
'site_export.json', json.dumps(site_export), 'application/octet-stream')
|
642 |
633 |
res = form.submit()
|
643 |
634 |
assert res.status_code == 302
|
644 |
|
assert get_role_model().objects.get(slug='basic')
|
|
635 |
assert Role.objects.get(slug='basic')
|
645 |
636 |
|
646 |
637 |
|
647 |
638 |
def test_manager_site_import_error(app, db, superuser):
|
... | ... | |
667 |
658 |
res = form.submit()
|
668 |
659 |
assert res.status_code == 200
|
669 |
660 |
assert 'missing Organizational Unit' in res.text
|
670 |
|
Role = get_role_model()
|
671 |
661 |
with pytest.raises(Role.DoesNotExist):
|
672 |
662 |
Role.objects.get(slug='basic')
|
673 |
663 |
|
... | ... | |
695 |
685 |
|
696 |
686 |
|
697 |
687 |
def test_manager_ou(app, superuser_or_admin, ou1):
|
698 |
|
OU = get_ou_model()
|
699 |
|
|
700 |
688 |
manager_home_page = login(app, superuser_or_admin, reverse('a2-manager-homepage'))
|
701 |
689 |
ou_homepage = manager_home_page.click(href='organizational-units')
|
702 |
690 |
assert set([e.text for e in ou_homepage.pyquery('td.name')]) == set(['OU1', 'Default organizational unit'])
|
... | ... | |
772 |
760 |
form = response.form
|
773 |
761 |
form.set('first_name', 'John')
|
774 |
762 |
form.set('last_name', 'Doe')
|
775 |
|
form.set('email', 'jd') # erroneous
|
776 |
|
form.set('password1', 'notvalid') # erroneous
|
|
763 |
form.set('email', 'jd') # erroneous
|
|
764 |
form.set('password1', 'notvalid') # erroneous
|
777 |
765 |
assert '<input type="hidden" name="next" value="%s">' % next_url in form.submit().body
|
778 |
766 |
|
779 |
767 |
|
... | ... | |
813 |
801 |
|
814 |
802 |
def test_roles_widget(admin, app, db):
|
815 |
803 |
from django.core import signing
|
816 |
|
from django_rbac.utils import get_role_model, get_ou_model
|
817 |
804 |
from authentic2.manager.forms import ChooseRoleForm
|
818 |
805 |
|
819 |
806 |
login(app, admin, '/manage/')
|
820 |
|
OU = get_ou_model()
|
821 |
807 |
cassis = OU.objects.create(name=u'Cassis')
|
822 |
808 |
la_bedoule = OU.objects.create(name=u'La Bédoule')
|
823 |
809 |
cuges = OU.objects.create(name=u'Cuges')
|
824 |
|
Role = get_role_model()
|
825 |
810 |
Role.objects.create(ou=cassis, name=u'Administrateur')
|
826 |
811 |
Role.objects.create(ou=la_bedoule, name=u'Administrateur')
|
827 |
812 |
Role.objects.create(ou=cuges, name=u'Administrateur')
|
... | ... | |
842 |
827 |
|
843 |
828 |
def test_user_add_settings(settings, admin, app, db):
|
844 |
829 |
passwd_options = ('generate_password', 'reset_password_at_next_login',
|
845 |
|
'send_mail', 'send_password_reset')
|
846 |
|
for policy in [choice[0] for choice in get_ou_model().USER_ADD_PASSWD_POLICY_CHOICES]:
|
|
830 |
'send_mail', 'send_password_reset')
|
|
831 |
for policy in [choice[0] for choice in OU.USER_ADD_PASSWD_POLICY_CHOICES]:
|
847 |
832 |
ou = get_default_ou()
|
848 |
833 |
ou.user_add_password_policy = policy
|
849 |
834 |
ou.save()
|
850 |
835 |
user_add = login(app, admin, '/manage/users/add/').follow()
|
851 |
836 |
for option, i in zip(passwd_options, range(4)):
|
852 |
|
assert user_add.form.get(option).value == {False:None, True:'on'}. \
|
853 |
|
get(get_ou_model().USER_ADD_PASSWD_POLICY_VALUES[policy][i])
|
|
837 |
assert (user_add.form.get(option).value
|
|
838 |
== {False: None, True: 'on'}.get(OU.USER_ADD_PASSWD_POLICY_VALUES[policy][i]))
|
854 |
839 |
app.get('/logout/').form.submit()
|
855 |
840 |
|
856 |
841 |
|
857 |
842 |
def test_ou_hide_username(admin, app, db):
|
858 |
|
OU = get_ou_model()
|
859 |
843 |
some_ou = OU.objects.create(name=u'Some Ou', show_username=False)
|
860 |
844 |
|
861 |
845 |
login(app, admin, '/manage/')
|
... | ... | |
872 |
856 |
form.set('password2', 'ABcd1234')
|
873 |
857 |
form.submit()
|
874 |
858 |
|
875 |
|
User = get_user_model()
|
876 |
859 |
assert User.objects.get(email='john.doe@gmail.com')
|
877 |
860 |
|
878 |
861 |
|
... | ... | |
882 |
865 |
|
883 |
866 |
url = u'/manage/users/%s/edit/' % simple_user.pk
|
884 |
867 |
login(app, superuser_or_admin, '/manage/')
|
885 |
|
User = get_user_model()
|
886 |
868 |
|
887 |
869 |
user = User.objects.get(id=simple_user.id)
|
888 |
870 |
assert user.email_verified
|
889 |
|
-
|