22from django .urls import reverse
33
44from .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
711class 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