0001-tests-add-select2-test-helper-41939.patch
tests/test_a2_rbac.py | ||
---|---|---|
37 | 37 |
from authentic2.utils import get_hex_uuid |
38 | 38 | |
39 | 39 | |
40 |
from .utils import login |
|
40 |
from .utils import login, request_select2
|
|
41 | 41 | |
42 | 42 | |
43 | 43 |
def test_update_rbac(db): |
... | ... | |
409 | 409 |
# Default: all users are visible |
410 | 410 |
response = login(app, simple_user, '/manage/roles/') |
411 | 411 |
response = response.click('role_ou1') |
412 |
select2_url = response.pyquery('select#id_user')[0].attrib['data-ajax--url'] |
|
413 |
select2_field_id = response.pyquery('select#id_user')[0].attrib['data-field_id'] |
|
414 | ||
415 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': ''}) |
|
416 |
assert select2_response.json['more'] is False |
|
417 |
assert (set(result['id'] for result in select2_response.json['results']) |
|
412 |
select2_json = request_select2(app, response) |
|
413 |
assert select2_json['more'] is False |
|
414 |
assert (set(result['id'] for result in select2_json['results']) |
|
418 | 415 |
== set([simple_user.id, user_ou1.id, admin.id])) |
419 | 416 | |
420 | 417 |
# with A2_RBAC_ROLE_ADMIN_RESTRICT_TO_OU_USERS after a reload of the admin |
... | ... | |
423 | 420 |
role_ou1.get_admin_role() |
424 | 421 |
response = app.get('/manage/roles/') |
425 | 422 |
response = response.click('role_ou1') |
426 |
select2_url = response.pyquery('select#id_user')[0].attrib['data-ajax--url'] |
|
427 |
select2_field_id = response.pyquery('select#id_user')[0].attrib['data-field_id'] |
|
428 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': ''}) |
|
429 |
assert select2_response.json['more'] is False |
|
430 |
assert (set(result['id'] for result in select2_response.json['results']) |
|
431 |
== set([user_ou1.id])) |
|
423 |
select2_json = request_select2(app, response) |
|
424 |
assert select2_json['more'] is False |
|
425 |
assert (set(result['id'] for result in select2_json['results']) == set([user_ou1.id])) |
|
432 | 426 | |
433 | 427 | |
434 | 428 |
def test_no_managed_ct(transactional_db, settings): |
tests/test_manager.py | ||
---|---|---|
37 | 37 |
from django.contrib.contenttypes.models import ContentType |
38 | 38 |
from django.utils.encoding import force_bytes |
39 | 39 |
from django.utils.six.moves.urllib.parse import urlparse |
40 |
from .utils import login, get_link_from_mail |
|
40 |
from .utils import login, get_link_from_mail, request_select2
|
|
41 | 41 | |
42 | 42 | |
43 | 43 |
pytestmark = pytest.mark.django_db |
... | ... | |
1115 | 1115 |
def test_manager_role_widgets_choices(app, simple_user, simple_role): |
1116 | 1116 | |
1117 | 1117 |
def get_choices(response): |
1118 |
select2_url = response.pyquery('select')[0].attrib['data-ajax--url'] |
|
1119 |
select2_field_id = response.pyquery('select')[0].attrib['data-field_id'] |
|
1120 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': ''}) |
|
1121 |
assert select2_response.json['more'] is False |
|
1122 |
return set(result['id'] for result in select2_response.json['results']) |
|
1118 |
select2_json = request_select2(app, response) |
|
1119 |
assert select2_json['more'] is False |
|
1120 |
return set(result['id'] for result in select2_json['results']) |
|
1123 | 1121 | |
1124 | 1122 |
visible_role = Role.objects.create(name='visible_role', ou=simple_user.ou) |
1125 | 1123 |
invisible_role = Role.objects.create(name='invisible_role', ou=simple_user.ou) |
... | ... | |
1152 | 1150 |
simple_role.get_admin_role().members.add(simple_user) |
1153 | 1151 | |
1154 | 1152 |
response = login(app, admin, '/manage/roles/%s/add-child/' % simple_role.pk) |
1155 |
select2_url = response.pyquery('select')[0].attrib['data-ajax--url'] |
|
1156 |
select2_field_id = response.pyquery('select')[0].attrib['data-field_id'] |
|
1157 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': ''}) |
|
1158 |
assert select2_response.json['more'] is False |
|
1153 |
select2_json = request_select2(app, response) |
|
1154 |
assert select2_json['more'] is False |
|
1159 | 1155 | |
1160 | 1156 |
# admin can see every roles |
1161 | 1157 |
assert set([simple_role.pk, other_role.pk]) == \ |
1162 |
set(result['id'] for result in select2_response.json['results'])
|
|
1158 |
set(result['id'] for result in select2_json['results']) |
|
1163 | 1159 | |
1164 |
response = login(app, simple_user)
|
|
1165 |
# with the same field_id
|
|
1166 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': ''})
|
|
1160 |
login(app, simple_user) |
|
1161 |
# same request from the page served for admin
|
|
1162 |
select2_json = request_select2(app, response)
|
|
1167 | 1163 |
# simple_user doesn't see all roles |
1168 |
assert simple_role.pk == select2_response.json['results'][0]['id'] |
|
1164 |
assert simple_role.pk == select2_json['results'][0]['id'] |
tests/utils.py | ||
---|---|---|
208 | 208 |
s.bind(('', 0)) |
209 | 209 |
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) |
210 | 210 |
return s.getsockname()[1] |
211 | ||
212 | ||
213 |
def request_select2(app, response, term=''): |
|
214 |
select2_url = response.pyquery('select')[0].attrib['data-ajax--url'] |
|
215 |
select2_field_id = response.pyquery('select')[0].attrib['data-field_id'] |
|
216 |
select2_response = app.get(select2_url, params={'field_id': select2_field_id, 'term': term}) |
|
217 |
return select2_response.json |
|
211 |
- |