Projet

Général

Profil

0001-tests-add-select2-test-helper-41939.patch

Valentin Deniaud, 28 mai 2020 15:07

Télécharger (5,9 ko)

Voir les différences:

Subject: [PATCH 1/2] tests: add select2 test helper (#41939)

 tests/test_a2_rbac.py | 20 +++++++-------------
 tests/test_manager.py | 26 +++++++++++---------------
 tests/utils.py        |  7 +++++++
 3 files changed, 25 insertions(+), 28 deletions(-)
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
-