-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_user.py
122 lines (84 loc) · 3.69 KB
/
test_user.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
"""
Tests for the user resource.
"""
import secrets
import pytest
from flask import url_for
from quotes_api.common import HttpStatus
def test_get_user(client, admin_headers, new_user):
"""Test the get user operation."""
random_id = secrets.token_hex(12)
# Test 404 error
user_url = url_for("auth.user_by_id", user_id=random_id)
res = client.get(user_url, headers=admin_headers)
assert res.status_code == HttpStatus.NOT_FOUND_404.value
assert res.get_json() == {"error": "User does not exist."}
# Test get user
user_url = url_for("auth.user_by_id", user_id=new_user.id)
res = client.get(user_url, headers=admin_headers)
data = res.get_json()
assert res.status_code == HttpStatus.OK_200.value
assert data["id"] == str(new_user.id)
assert data["username"] == new_user.username
assert data["email"] == new_user.email
assert data["active"] == new_user.active
assert data["roles"] == new_user.roles
def test_put_user(client, admin_headers, new_user):
"""Tests the put user operation."""
random_id = secrets.token_hex(12)
# Test 404 error
user_url = url_for("auth.user_by_id", user_id=random_id)
res = client.put(user_url, headers=admin_headers)
assert res.status_code == HttpStatus.NOT_FOUND_404.value
assert res.get_json() == {"error": "User does not exist."}
# Test put user
data = {"username": "test", "email": "[email protected]", "password": "test"}
user_url = url_for("auth.user_by_id", user_id=new_user.id)
res = client.put(user_url, headers=admin_headers, json=data)
assert res.status_code == HttpStatus.NO_CONTENT_204.value
def test_patch_user(client, admin_headers, new_user):
"""Tests the patch user operation."""
random_id = secrets.token_hex(12)
# Test 404 error
user_url = url_for("auth.user_by_id", user_id=random_id)
res = client.patch(user_url, headers=admin_headers)
assert res.status_code == HttpStatus.NOT_FOUND_404.value
assert res.get_json() == {"error": "User does not exist."}
# Tets patch user
data = {"username": "test"}
user_url = url_for("auth.user_by_id", user_id=new_user.id)
res = client.patch(user_url, headers=admin_headers, json=data)
assert res.status_code == HttpStatus.NO_CONTENT_204.value
def test_delete_user(client, admin_headers, new_user, user_model):
"""Tests the delete user operation."""
random_id = secrets.token_hex(12)
# Test 404 error
user_url = url_for("auth.user_by_id", user_id=random_id)
res = client.delete(user_url, headers=admin_headers)
assert res.status_code == HttpStatus.NOT_FOUND_404.value
assert res.get_json() == {"error": "User does not exist."}
# Test delete user
user_url = url_for("auth.user_by_id", user_id=new_user.id)
res = client.delete(user_url, headers=admin_headers)
assert res.status_code == HttpStatus.NO_CONTENT_204.value
# Test user is deleted from the database
with pytest.raises(Exception):
user = user_model.objects.get(id=new_user.id)
def test_get_all_users(client, admin_headers, new_user):
"""Tests the get all users operation."""
# Test get all users
users_url = url_for("auth.users")
query_parameters = {"page": "1", "per_page": "5"}
res = client.get(users_url, headers=admin_headers, query_string=query_parameters)
assert res.status_code == HttpStatus.OK_200.value
data = res.get_json()
users = data["records"]
meta = data["meta"]
assert meta["page_number"] == 1
assert meta["page_size"] == 5
assert meta["total_pages"] == 1
assert meta["total_records"] == 2
user_found = []
for user in users:
user_found.append(user["id"] == str(new_user.id))
assert any(user_found)