Skip to content

Commit 1964175

Browse files
authored
Merge pull request #20 from Veskor/tests/roles
tests for roles
2 parents 1abd283 + 1f67a1a commit 1964175

File tree

3 files changed

+96
-5
lines changed

3 files changed

+96
-5
lines changed

freenit/api/role.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,18 +74,21 @@ def post(self, args, role_id):
7474
"""Assign user to role"""
7575
Role = current_app.user_datastore.role_model
7676
User = current_app.user_datastore.user_model
77-
UserRoles = current_app.user_datastore.UserRoles
77+
UserRoles = current_app.user_datastore.UserRole
7878
try:
7979
role = Role.get(id=role_id)
8080
except Role.DoesNotExist:
8181
abort(404, message='No such role')
82+
83+
for user in role.users:
84+
if user.user.id == args['id']:
85+
abort(409, message='User already assigned to role')
86+
8287
try:
8388
user = User.get(id=args['id'])
8489
except User.DoesNotExist:
8590
abort(404, message='No such user')
86-
for user in role.users:
87-
if user.user.id == args['id']:
88-
abort(409, message='User already assigned to role')
91+
8992
user_role = UserRoles(user=user, role=role)
9093
user_role.save()
9194
return user

tests/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def patch(self, endpoint, data, csrf=None, **kwargs):
5959
def delete(self, endpoint, csrf=None, **kwargs):
6060
url = url_for(endpoint, **kwargs)
6161
self.set_csrf(csrf)
62-
return self.client.patch(url, headers=self.headers)
62+
return self.client.delete(url, headers=self.headers)
6363

6464
def login(self, endpoint, user, password):
6565
data = {

tests/test_role.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
from .base import Base
2+
3+
4+
class TestRole(Base):
5+
def test_get_all(self, user_factory):
6+
user = user_factory()
7+
user.save()
8+
response = self.login('auth.login', user, 'Sekrit')
9+
assert response.status_code == 200
10+
response = self.get('roles.list')
11+
assert response.status_code == 200
12+
13+
def test_post(self, user_factory, role_factory):
14+
user = user_factory()
15+
role = role_factory()
16+
role.save()
17+
user.save()
18+
response = self.login('auth.login', user, 'Sekrit')
19+
assert response.status_code == 200
20+
21+
data = {
22+
'description': 'Admin role.',
23+
'name': 'Admin',
24+
}
25+
26+
response = self.post('roles.list', data, 'access')
27+
assert response.status_code == 200
28+
json_data = response.get_json()
29+
assert data['name'] == json_data['name']
30+
newrole = role.get(id=json_data['id'])
31+
assert newrole.description == data['description']
32+
33+
def test_get(self, user_factory, role_factory):
34+
user = user_factory()
35+
role = role_factory()
36+
user.save()
37+
role.save()
38+
response = self.login('auth.login', user, 'Sekrit')
39+
assert response.status_code == 200
40+
response = self.get('roles.detail', role_id=role.id)
41+
assert response.status_code == 200
42+
43+
def test_patch(self, user_factory, role_factory):
44+
user = user_factory()
45+
role = role_factory()
46+
user.save()
47+
role.save()
48+
response = self.login('auth.login', user, 'Sekrit')
49+
assert response.status_code == 200
50+
data = {
51+
'description': 'Admin role',
52+
}
53+
response = self.patch('roles.detail', data, 'access', role_id=role.id)
54+
assert response.status_code == 200
55+
role = role.get(id=role.id)
56+
assert role.description == data['description']
57+
58+
def test_delete(self, user_factory, role_factory):
59+
user = user_factory()
60+
user.save()
61+
response = self.login('auth.login', user, 'Sekrit')
62+
assert response.status_code == 200
63+
newrole = role_factory()
64+
newrole.save()
65+
response = self.delete('roles.detail', 'access', role_id=newrole.id)
66+
assert response.status_code == 200
67+
68+
def test_assign_deassign_role(self, user_factory, role_factory):
69+
user = user_factory()
70+
role = role_factory()
71+
user.save()
72+
role.save()
73+
response = self.login('auth.login', user, 'Sekrit')
74+
assert response.status_code == 200
75+
user = user_factory()
76+
user.save()
77+
data = {
78+
"id": user.id
79+
}
80+
response = self.post('roles.user_assign',
81+
data, 'access',
82+
role_id=role.id)
83+
assert response.status_code == 200
84+
response = self.delete('roles.user_deassign',
85+
'access',
86+
user_id=user.id,
87+
role_id=role.id)
88+
assert response.status_code == 200

0 commit comments

Comments
 (0)