@@ -12,23 +12,93 @@ def setUp(self):
12
12
self .superuser = UserModel .objects .create_superuser ('superuser' , 'superuser@localhost' , 'pass' )
13
13
self .url = '/login-required/'
14
14
15
- def _logout_session_time (self ):
16
- settings .AUTO_LOGOUT = {'SESSION_TIME' : 1 }
15
+ def assertLoginRequiredIsOk (self ):
16
+ resp = self .client .get (self .url )
17
+ self .assertContains (resp , 'login required view' , msg_prefix = 'Fine with authorized' )
18
+
19
+ def assertLoginRequiredRedirect (self ):
17
20
resp = self .client .get (self .url )
18
21
self .assertRedirects (resp , f'{ settings .LOGIN_URL } ?next={ self .url } ' , msg_prefix = 'Redirect for anonymous' )
19
22
23
+ def _logout_session_time (self ):
24
+ settings .AUTO_LOGOUT = {'SESSION_TIME' : 1 }
25
+ self .assertLoginRequiredRedirect ()
26
+
20
27
self .client .force_login (self .user )
21
- resp = self .client .get (self .url )
22
- self .assertContains (resp , 'login required view' , msg_prefix = 'Fine with authorized' )
28
+ self .assertLoginRequiredIsOk ()
23
29
24
30
sleep (1 )
25
- resp = self .client .get (self .url )
26
- self .assertRedirects (resp , f'{ settings .LOGIN_URL } ?next={ self .url } ' , msg_prefix = 'Logout on session time expired' )
31
+ self .assertLoginRequiredRedirect ()
27
32
28
33
def test_logout_session_time (self ):
29
34
settings .USE_TZ = False
30
35
self ._logout_session_time ()
31
36
32
- def test_logout_session_time_using_tz (self ):
37
+ def test_logout_session_time_using_tz_utc (self ):
38
+ settings .USE_TZ = True
39
+ self ._logout_session_time ()
40
+
41
+ def test_logout_session_time_using_tz_non_utc (self ):
33
42
settings .USE_TZ = True
43
+ settings .TIME_ZONE = 'Asia/Yekaterinburg'
34
44
self ._logout_session_time ()
45
+
46
+ def test_logout_idle_time_no_idle (self ):
47
+ settings .AUTO_LOGOUT = {'IDLE_TIME' : 1 }
48
+ self .client .force_login (self .user )
49
+ self .assertLoginRequiredIsOk ()
50
+
51
+ for _ in range (10 ):
52
+ sleep (0.5 )
53
+ self .assertLoginRequiredIsOk ()
54
+
55
+ def test_logout_idle_time (self ):
56
+ settings .AUTO_LOGOUT = {'IDLE_TIME' : 1 }
57
+ self .client .force_login (self .user )
58
+ self .assertLoginRequiredIsOk ()
59
+
60
+ sleep (1.5 )
61
+ self .assertLoginRequiredRedirect ()
62
+
63
+ def test_combine_idle_and_session_time (self ):
64
+ settings .AUTO_LOGOUT = {
65
+ 'IDLE_TIME' : 1 ,
66
+ 'SESSION_TIME' : 2 ,
67
+ }
68
+
69
+ self .client .force_login (self .user )
70
+ self .assertLoginRequiredIsOk ()
71
+
72
+ sleep (0.5 )
73
+ self .assertLoginRequiredIsOk ()
74
+ sleep (0.5 )
75
+ self .assertLoginRequiredIsOk ()
76
+ sleep (0.5 )
77
+ self .assertLoginRequiredIsOk ()
78
+ sleep (0.5 )
79
+ self .assertLoginRequiredRedirect ()
80
+
81
+ def test_combine_idle_and_session_time_but_session_less_than_idle (self ):
82
+ settings .AUTO_LOGOUT = {
83
+ 'IDLE_TIME' : 2 ,
84
+ 'SESSION_TIME' : 1 ,
85
+ }
86
+
87
+ self .client .force_login (self .user )
88
+ self .assertLoginRequiredIsOk ()
89
+ sleep (0.5 )
90
+ self .assertLoginRequiredIsOk ()
91
+ sleep (0.5 )
92
+ self .assertLoginRequiredRedirect ()
93
+
94
+ self .client .force_login (self .user )
95
+ self .assertLoginRequiredIsOk ()
96
+ sleep (0.5 )
97
+ self .assertLoginRequiredIsOk ()
98
+ sleep (0.5 )
99
+ self .assertLoginRequiredRedirect ()
100
+
101
+ self .client .force_login (self .user )
102
+ self .assertLoginRequiredIsOk ()
103
+ sleep (1 )
104
+ self .assertLoginRequiredRedirect ()
0 commit comments