Projet

Général

Profil

0001-tests-add-test-of-api-user-API-8603.patch

Benjamin Dauvergne, 12 octobre 2015 16:23

Télécharger (5,4 ko)

Voir les différences:

Subject: [PATCH] tests: add test of /api/user/ API (#8603)

 src/authentic2/tests/test_api.py | 113 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)
 create mode 100644 src/authentic2/tests/test_api.py
src/authentic2/tests/test_api.py
1
# -*- coding: utf-8 -*-
2
import json
3
import pytest
4

  
5
from authentic2_provisionning_ldap.ldap_utils import Slapd, has_slapd
6
from django.contrib.auth import get_user_model
7
from django.core.exceptions import ImproperlyConfigured
8
from authentic2.a2_rbac.utils import get_default_ou
9
from django_rbac.utils import get_ou_model, get_role_model
10
from authentic2.models import Service
11

  
12
pytestmark = pytest.mark.django_db
13

  
14
def test_api_user(client):
15
    # create an user, an ou role, a service and a service role
16
    ou = get_default_ou()
17

  
18
    User = get_user_model()
19
    user = User.objects.create(ou=ou, username='john.doe', first_name=u'Jôhn',
20
                               last_name=u'Doe', email='john.doe@example.net')
21
    user.set_password('password')
22
    user.save()
23

  
24
    Role = get_role_model()
25
    role1 = Role.objects.create(name='Role1', ou=ou)
26
    role1.members.add(user)
27

  
28
    service = Service.objects.create(name='Service1', slug='service1', ou=ou)
29
    role2 = Role.objects.create(name='Role2', service=service)
30
    role2.members.add(user)
31

  
32
    role3 = Role.objects.create(name='Role3', ou=ou)
33
    role4 = Role.objects.create(name='Role4', service=service)
34

  
35
    # test failure when unlogged
36
    response = client.get('/api/user/', HTTP_ORIGIN='http://testserver')
37
    assert response.content == '{}'
38

  
39
    # login
40
    client.login(username='john.doe', password='password')
41
    response = client.get('/api/user/', HTTP_ORIGIN='http://testserver')
42
    data = json.loads(response.content)
43
    assert isinstance(data, dict)
44
    assert set(data.keys()) == set(['uuid', 'username', 'first_name',
45
                                    'ou__slug', 'ou__uuid', 'ou__name',
46
                                    'last_name', 'email', 'roles', 'services',
47
                                    'is_superuser', 'ou'])
48
    assert data['uuid'] == user.uuid
49
    assert data['username'] == user.username
50
    assert data['first_name'] == user.first_name
51
    assert data['last_name'] == user.last_name
52
    assert data['email'] == user.email
53
    assert data['is_superuser'] == user.is_superuser
54
    assert data['ou'] == ou.name
55
    assert data['ou__name'] == ou.name
56
    assert data['ou__slug'] == ou.slug
57
    assert data['ou__uuid'] == ou.uuid
58
    assert isinstance(data['roles'], list)
59
    assert len(data['roles']) == 2
60
    for role in data['roles']:
61
        assert set(role.keys()) == set(['uuid', 'name', 'slug', 'is_admin',
62
                                        'is_service', 'ou__uuid', 'ou__name',
63
                                        'ou__slug'])
64
        assert (role['uuid'] == role1.uuid and
65
                role['name'] == role1.name and
66
                role['slug'] == role1.slug and
67
                role['is_admin'] == False and
68
                role['is_service'] == False and
69
                role['ou__uuid'] == ou.uuid and
70
                role['ou__name'] == ou.name and
71
                role['ou__slug'] == ou.slug) or \
72
               (role['uuid'] == role2.uuid and
73
                role['name'] == role2.name and
74
                role['slug'] == role2.slug and
75
                role['is_admin'] == False and
76
                role['is_service'] == True and
77
                role['ou__uuid'] == ou.uuid and
78
                role['ou__name'] == ou.name and
79
                role['ou__slug'] == ou.slug)
80

  
81
    assert isinstance(data['services'], list)
82
    assert len(data['services']) == 1
83
    s = data['services'][0]
84
    assert set(s.keys()) == set(['name', 'slug', 'ou', 'ou__name', 'ou__slug',
85
                                 'ou__uuid', 'roles'])
86
    assert s['name'] == service.name
87
    assert s['slug'] == service.slug
88
    assert s['ou'] == ou.name
89
    assert s['ou__name'] == ou.name
90
    assert s['ou__slug'] == ou.slug
91
    assert s['ou__uuid'] == ou.uuid
92
    assert isinstance(s['roles'], list)
93
    assert len(s['roles']) == 2
94
    for role in s['roles']:
95
        assert set(role.keys()) == set(['uuid', 'name', 'slug', 'is_admin',
96
                                        'is_service', 'ou__uuid', 'ou__name',
97
                                        'ou__slug'])
98
        assert (role['uuid'] == role1.uuid and
99
                role['name'] == role1.name and
100
                role['slug'] == role1.slug and
101
                role['is_admin'] == False and
102
                role['is_service'] == False and
103
                role['ou__uuid'] == ou.uuid and
104
                role['ou__name'] == ou.name and
105
                role['ou__slug'] == ou.slug) or \
106
               (role['uuid'] == role2.uuid and
107
                role['name'] == role2.name and
108
                role['slug'] == role2.slug and
109
                role['is_admin'] == False and
110
                role['is_service'] == True and
111
                role['ou__uuid'] == ou.uuid and
112
                role['ou__name'] == ou.name and
113
                role['ou__slug'] == ou.slug)
0
-