Skip to content

Commit 16ae46b

Browse files
committed
create users app tests
1 parent 0f761f8 commit 16ae46b

File tree

1 file changed

+117
-4
lines changed

1 file changed

+117
-4
lines changed

apps/users/tests.py

Lines changed: 117 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,135 @@
22
from django.urls import reverse
33

44
from .models import User, UserProfile
5+
from .services import generate_jwt_tokens
6+
from .forms import RegisterForm, LoginForm
7+
8+
from rest_framework_simplejwt.tokens import RefreshToken, AccessToken
59

610

711
class TestUsers(TestCase):
12+
def setUp(self):
13+
self.username = "Admin"
14+
self.is_active=True
15+
self.email = "admin@example.com",
16+
self.password = "password"
17+
18+
user = User.objects.create(
19+
username=self.username,
20+
is_active=self.is_active,
21+
email=self.email
22+
)
23+
user.set_password(self.password)
24+
user.save()
25+
26+
self.user = user
27+
28+
def test_user_creating_profile_exists(self):
29+
profile = UserProfile.objects.filter(pk=self.user.profiles.pk)
30+
self.assertTrue(profile.exists())
831

932
def test_user_register_page(self):
1033
response = self.client.get(reverse("users:register"))
11-
1234
self.assertEqual(response.status_code, 200)
1335
self.assertTemplateUsed(response, "auth/register.html")
1436
self.assertContains(response, "Register")
15-
# self.assertRedirects(response, reverse("users:login"))
1637

1738
def test_user_login_page(self):
1839
response = self.client.get(reverse("users:login"))
19-
2040
self.assertEqual(response.status_code, 200)
2141
self.assertTemplateUsed(response, "auth/login.html")
2242
self.assertContains(response, "Login")
23-
# self.assertRedirects(response, reverse("blog:home"))
43+
44+
def test_user_logout_page(self):
45+
data = {
46+
"username": self.username,
47+
"password": self.password,
48+
}
49+
# Authorization
50+
self.client.post(reverse("users:login"), data=data)
51+
52+
response = self.client.get(reverse("users:logout"))
53+
self.assertEqual(response.status_code, 200)
54+
self.assertTemplateUsed(response, "auth/logout.html")
55+
self.assertContains(response, "Logout")
56+
57+
def test_user_profile_page(self):
58+
response = self.client.get(reverse("users:user_profile", kwargs={"username": self.username}))
59+
self.assertEqual(response.status_code, 200)
60+
self.assertTemplateUsed(response, "blog/profile.html")
61+
self.assertContains(response, self.user.username)
62+
63+
def test_RegisterForm(self):
64+
form_data = {
65+
"username": "Admin1",
66+
"password1": "password1",
67+
"password2": "password1",
68+
"email": "admin1@example.com",
69+
}
70+
form = RegisterForm(data=form_data)
71+
self.assertTrue(form.is_valid())
72+
73+
def test_LoginForm(self):
74+
form_data = {
75+
"username": "Admin1",
76+
"password": "password1",
77+
}
78+
form = LoginForm(data=form_data)
79+
self.assertTrue(form.is_valid())
80+
81+
def test_registration(self):
82+
data = {
83+
"username": "Admin1",
84+
"password1": "password1",
85+
"password2": "password1",
86+
"email": "admin1@example.com",
87+
}
88+
response = self.client.post(reverse("users:register"), data=data)
89+
self.assertEqual(response.status_code, 302) # Redirecting
90+
self.assertRedirects(response, reverse("users:login"))
91+
92+
def test_authorization(self):
93+
data = {
94+
"username": self.username,
95+
"password": self.password,
96+
}
97+
98+
response = self.client.post(reverse("users:login"), data=data)
99+
100+
refresh_token = response.client.cookies.get("refresh_token").value
101+
access_token = response.client.cookies.get("access_token").value
102+
103+
self.assertEqual(response.status_code, 302) # Redirecting
104+
self.assertRedirects(response, reverse("blog:home"))
105+
106+
access_token = AccessToken(access_token)
107+
refresh_token = RefreshToken(refresh_token)
108+
109+
user_id = access_token["user_id"]
110+
user_in_db = User.objects.filter(id=user_id)
111+
112+
user_in_refresh_id = refresh_token.for_user(user_in_db.first()).access_token["user_id"]
113+
114+
self.assertTrue(user_in_db.exists())
115+
self.assertEqual(self.user.id, user_in_db.first().id)
116+
self.assertEqual(self.user.id, user_in_refresh_id)
117+
118+
def test_logout(self):
119+
data = {
120+
"username": self.username,
121+
"password": self.password
122+
}
123+
# Authorization
124+
response = self.client.post(reverse("users:login"), data=data)
125+
126+
refresh_token_before = response.client.cookies.get("refresh_token").value
127+
access_token_before = response.client.cookies.get("access_token").value
128+
129+
response = self.client.post(reverse("users:logout"))
130+
131+
refresh_token_after = response.client.cookies.get("refresh_token").value
132+
access_token_after = response.client.cookies.get("access_token").value
133+
134+
self.assertNotEqual(refresh_token_before, refresh_token_after)
135+
self.assertNotEqual(access_token_before, access_token_after)
136+

0 commit comments

Comments
 (0)