Newer
Older
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
from django.contrib import auth
from django.urls import reverse
def test_restricted_access(api_client, db):
url = reverse("api:v1:artists-list")
response = api_client.get(url)
assert response.status_code == 401
def test_login_correct(api_client, factories, mocker):
login = mocker.spy(auth, "login")
password = "hellotest"
user = factories["users.User"]()
user.set_password(password)
user.save()
url = reverse("api:v1:auth:login")
data = {"username": user.username, "password": password}
expected = {}
response = api_client.post(url, data)
assert response.status_code == 200
assert response.data == expected
login.assert_called_once_with(request=mocker.ANY, user=user)
def test_login_incorrect(api_client, factories, mocker):
login = mocker.spy(auth, "login")
user = factories["users.User"]()
url = reverse("api:v1:auth:login")
data = {"username": user.username, "password": "invalid"}
response = api_client.post(url, data)
assert response.status_code == 400
login.assert_not_called()
def test_login_inactive(api_client, factories, mocker):
login = mocker.spy(auth, "login")
password = "hellotest"
user = factories["users.User"](is_active=False)
user.set_password(password)
user.save()
url = reverse("api:v1:auth:login")
data = {"username": user.username, "password": password}
response = api_client.post(url, data)
assert response.status_code == 400
assert "Invalid username or password" in response.data["non_field_errors"]
login.assert_not_called()
def test_logout(logged_in_api_client, factories, mocker):
logout = mocker.spy(auth, "logout")
url = reverse("api:v1:auth:logout")
response = logged_in_api_client.post(url)
assert response.status_code == 200
assert response.data == {}
logout.assert_called_once_with(request=mocker.ANY)
def test_logout_real(api_client, factories):
password = "hellotest"
user = factories["users.User"]()
user.set_password(password)
user.save()
url = reverse("api:v1:auth:login")
data = {"username": user.username, "password": password}
response = api_client.post(url, data)
url = reverse("api:v1:auth:logout")
response = api_client.post(url)
url = reverse("api:v1:artists-list")
response = api_client.get(url)
assert response.status_code == 401