@@ -15,10 +15,13 @@ def setUp(self):
15
15
def assertLoginRequiredIsOk (self ):
16
16
resp = self .client .get (self .url )
17
17
self .assertContains (resp , 'login required view' , msg_prefix = 'Fine with authorized' )
18
+ return resp
18
19
19
20
def assertLoginRequiredRedirect (self ):
20
21
resp = self .client .get (self .url )
21
- self .assertRedirects (resp , f'{ settings .LOGIN_URL } ?next={ self .url } ' , msg_prefix = 'Redirect for anonymous' )
22
+ self .assertEqual (resp .status_code , 302 , msg = 'Redirect for anonymous' )
23
+ self .assertEqual (resp ['location' ], f'{ settings .LOGIN_URL } ?next={ self .url } ' )
24
+ return resp
22
25
23
26
def _logout_session_time (self ):
24
27
settings .AUTO_LOGOUT = {'SESSION_TIME' : 1 }
@@ -102,3 +105,38 @@ def test_combine_idle_and_session_time_but_session_less_than_idle(self):
102
105
self .assertLoginRequiredIsOk ()
103
106
sleep (1 )
104
107
self .assertLoginRequiredRedirect ()
108
+
109
+ def test_message_on_auto_logout (self ):
110
+ settings .AUTO_LOGOUT = {
111
+ 'SESSION_TIME' : 1 ,
112
+ 'MESSAGE' : 'The session has expired. Please login again to continue.' ,
113
+ }
114
+ self .client .force_login (self .user )
115
+ self .assertLoginRequiredIsOk ()
116
+ sleep (1 )
117
+ resp = self .assertLoginRequiredRedirect ()
118
+
119
+ # display message after redirect
120
+ resp = self .client .get (resp ['location' ])
121
+ self .assertContains (resp , 'login page' , msg_prefix = resp .content .decode ())
122
+ self .assertContains (resp , 'class="message info"' , msg_prefix = resp .content .decode ())
123
+ self .assertContains (resp , settings .AUTO_LOGOUT ['MESSAGE' ])
124
+
125
+ # message displays only once
126
+ resp = self .assertLoginRequiredRedirect ()
127
+ resp = self .client .get (resp ['location' ])
128
+ self .assertContains (resp , 'login page' , msg_prefix = resp .content .decode ())
129
+ self .assertNotContains (resp , 'class="message info"' , msg_prefix = resp .content .decode ())
130
+
131
+ def test_no_messages_if_no_messages (self ):
132
+ settings .AUTO_LOGOUT = {
133
+ 'SESSION_TIME' : 1 ,
134
+ 'MESSAGE' : None ,
135
+ }
136
+ self .client .force_login (self .user )
137
+ self .assertLoginRequiredIsOk ()
138
+ sleep (1 )
139
+ resp = self .assertLoginRequiredRedirect ()
140
+ resp = self .client .get (resp ['location' ])
141
+ self .assertContains (resp , 'login page' , msg_prefix = resp .content .decode ())
142
+ self .assertNotContains (resp , 'class="message info"' , msg_prefix = resp .content .decode ())
0 commit comments