1
+ import logging
2
+
1
3
from mailauth .backends import MailAuthBackend
2
4
3
5
4
6
class TestMailAuthBackend :
5
-
6
7
def test_authenticate (self , db , user , settings , signer , signature ):
7
- settings .LOGIN_URL_TIMEOUT = float (' inf' )
8
+ settings .LOGIN_URL_TIMEOUT = float (" inf" )
8
9
backend = MailAuthBackend ()
9
10
backend .signer = signer
10
11
user = backend .authenticate (None , token = signature )
11
12
assert user is not None
12
13
assert user .is_authenticated
13
14
14
- def test_authenticate__user_does_not_exist (self , db , settings , signer , signature ):
15
- settings .LOGIN_URL_TIMEOUT = float ('inf' )
15
+ def test_authenticate__user_does_not_exist (
16
+ self , db , caplog , settings , signer , signature
17
+ ):
18
+ settings .LOGIN_URL_TIMEOUT = float ("inf" )
16
19
backend = MailAuthBackend ()
17
20
backend .signer = signer
18
- user = backend .authenticate (None , token = signature )
21
+ with caplog .at_level (logging .WARNING ):
22
+ user = backend .authenticate (None , token = signature )
19
23
assert user is None
24
+ assert caplog .records [- 1 ].levelname == "WARNING"
25
+ assert caplog .records [- 1 ].message == (
26
+ "Valid token for non-existing user. Maybe the user has been deleted."
27
+ )
28
+
29
+ def test_authenticate__timeout (
30
+ self , db , caplog , user , settings , signer , signature
31
+ ):
32
+ settings .LOGIN_URL_TIMEOUT = 0
33
+ backend = MailAuthBackend ()
34
+ backend .signer = signer
35
+ with caplog .at_level (logging .WARNING ):
36
+ user = backend .authenticate (None , token = signature )
37
+ assert user is None
38
+ assert caplog .records [- 1 ].levelname == "WARNING"
39
+ assert caplog .records [- 1 ].message == "Token has expired."
40
+
41
+ def test_authenticate__corrupted_token (
42
+ self , db , caplog , user , settings , signer , signature
43
+ ):
44
+ settings .LOGIN_URL_TIMEOUT = 0
45
+ backend = MailAuthBackend ()
46
+ backend .signer = signer
47
+ with caplog .at_level (logging .ERROR ):
48
+ user = backend .authenticate (None , token = "not/a/valid-token" )
49
+ assert user is None
50
+ assert caplog .records [- 1 ].levelname == "ERROR"
51
+ assert (
52
+ caplog .records [- 1 ].message
53
+ == 'Malicious or corrupted login token received: "not/a/valid-token"'
54
+ )
20
55
21
56
def test_get_token (self , signer , signature , user ):
22
57
backend = MailAuthBackend ()
@@ -27,5 +62,5 @@ def test_get_login_url(self, signer, signature):
27
62
backend = MailAuthBackend ()
28
63
MailAuthBackend .signer = signer
29
64
assert backend .get_login_url (signature ) == (
30
- ' /accounts/login/LZ/173QUS/1Hjptg/fTLJcaon_7zMDyFTIFtlDqbdSt4'
65
+ " /accounts/login/LZ/173QUS/1Hjptg/fTLJcaon_7zMDyFTIFtlDqbdSt4"
31
66
)
0 commit comments