2
2
from base64 import urlsafe_b64encode
3
3
from importlib import import_module
4
4
5
- from django .http import HttpRequest
6
- from django .test import RequestFactory ,TransactionTestCase , Client
5
+ from django .test import RequestFactory , TransactionTestCase , Client
7
6
from django .urls import reverse
8
7
9
8
from django .conf import settings
15
14
def get_server_id (request ):
16
15
return request .META ["SERVER_NAME" ] + "1"
17
16
17
+
18
18
def get_server_name (request ):
19
19
return "MySite"
20
20
21
- class test_fido (TransactionTestCase ):
21
+
22
+ class TestFIDO (TransactionTestCase ):
22
23
def setUp (self ) -> None :
23
24
if not getattr (self ,"assertEquals" ,None ):
24
25
self .assertEquals = self .assertEqual
25
26
from django .contrib .auth import get_user_model
26
27
self .user_model = get_user_model ()
27
- if self .user_model .objects .filter (username = "test" ).count () == 0 :
28
- self .user = self .user_model .objects .create_user (username = "test" ,password = "test" )
28
+ if not self .user_model .objects .filter (username = "test" ).exists () :
29
+ self .user = self .user_model .objects .create_user (username = "test" , password = "test" )
29
30
else :
30
31
self .user = self .user_model .objects .get (username = "test" )
31
32
self .client = Client ()
@@ -40,32 +41,30 @@ def setUp(self) -> None:
40
41
self .client .post ("/auth/login" , {"username" : "test" , "password" : "test" , 'passkeys' : '' })
41
42
self .factory = RequestFactory ()
42
43
43
-
44
44
def test_key_reg (self ):
45
- self .client .post ('auth/login' ,{"usernaame" :"test" ,"password" :"test" ,"passkeys" :"" })
45
+ self .client .post ('auth/login' , {"usernaame" : "test" , "password" : "test" , "passkeys" : "" })
46
46
r = self .client .get (reverse ('passkeys:reg_begin' ))
47
- self .assertEquals (r .status_code , 200 )
47
+ self .assertEqual (r .status_code , 200 )
48
48
j = json .loads (r .content )
49
49
j ['publicKey' ]['challenge' ] = j ['publicKey' ]['challenge' ].encode ("ascii" )
50
50
s = SoftWebauthnDevice ()
51
51
res = s .create (j , "https://" + j ["publicKey" ]["rp" ]["id" ])
52
- res ["key_name" ]= "testKey"
52
+ res ["key_name" ] = "testKey"
53
53
u = reverse ('passkeys:reg_complete' )
54
- r = self .client .post (u , data = json .dumps (res ),headers = {"USER_AGENT" :"" }, HTTP_USER_AGENT = "" , content_type = "application/json" )
54
+ r = self .client .post (u , data = json .dumps (res ), headers = {"USER_AGENT" : "" }, HTTP_USER_AGENT = "" , content_type = "application/json" )
55
55
try :
56
56
j = json .loads (r .content )
57
57
except Exception :
58
58
raise AssertionError ("Failed to get the required JSON after reg_completed" )
59
59
self .assertTrue ("status" in j )
60
60
61
- self .assertEquals (j ["status" ], "OK" )
62
- self .assertEquals (UserPasskey .objects .latest ('id' ).name , "testKey" )
61
+ self .assertEqual (j ["status" ], "OK" )
62
+ self .assertEqual (UserPasskey .objects .latest ('id' ).name , "testKey" )
63
63
return s
64
64
65
-
66
65
def test_auto_key_name (self ):
67
66
r = self .client .get (reverse ('passkeys:reg_begin' ))
68
- self .assertEquals (r .status_code , 200 )
67
+ self .assertEqual (r .status_code , 200 )
69
68
j = json .loads (r .content )
70
69
j ['publicKey' ]['challenge' ] = j ['publicKey' ]['challenge' ].encode ("ascii" )
71
70
s = SoftWebauthnDevice ()
@@ -77,8 +76,8 @@ def test_auto_key_name(self):
77
76
except Exception :
78
77
raise AssertionError ("Failed to get the required JSON after reg_completed" )
79
78
self .assertTrue ("status" in j )
80
- self .assertEquals (j ["status" ], "OK" )
81
- self .assertEquals (UserPasskey .objects .latest ('id' ).name ,"Apple" )
79
+ self .assertEqual (j ["status" ], "OK" )
80
+ self .assertEqual (UserPasskey .objects .latest ('id' ).name , "Apple" )
82
81
return s
83
82
84
83
def test_error_when_no_session (self ):
@@ -92,35 +91,35 @@ def test_error_when_no_session(self):
92
91
except Exception :
93
92
raise AssertionError ("Failed to get the required JSON after reg_completed" )
94
93
self .assertTrue ("status" in j )
95
- self .assertEquals (j ["status" ], "ERR" )
96
- self .assertEquals (j ["message" ], "FIDO Status can't be found, please try again" )
94
+ self .assertEqual (j ["status" ], "ERR" )
95
+ self .assertEqual (j ["message" ], "FIDO Status can't be found, please try again" )
97
96
98
97
def test_passkey_login (self ):
99
98
authenticator = self .test_key_reg ()
100
99
self .client .get ('/auth/logout' )
101
100
r = self .client .get (reverse ('passkeys:auth_begin' ))
102
- self .assertEquals (r .status_code , 200 )
101
+ self .assertEqual (r .status_code , 200 )
103
102
j = json .loads (r .content )
104
103
j ['publicKey' ]['challenge' ] = j ['publicKey' ]['challenge' ].encode ("ascii" )
105
104
106
105
res = authenticator .get (j , "https://" + j ["publicKey" ]["rpId" ])
107
106
u = reverse ('login' )
108
- self .client .post (u , {'passkeys' : json .dumps (res ), "username" : "" , "password" : "" },headers = {"USER_AGENT" :"" }, HTTP_USER_AGENT = "" )
109
- self .assertTrue (self .client .session .get ('_auth_user_id' ,False ))
110
- self .assertTrue (self .client .session .get ("passkey" ,{}).get ("passkey" ,False ))
111
- self .assertEquals (self .client .session .get ("passkey" ,{}).get ("name" ),"testKey" )
107
+ self .client .post (u , {'passkeys' : json .dumps (res ), "username" : "" , "password" : "" }, headers = {"USER_AGENT" : "" }, HTTP_USER_AGENT = "" )
108
+ self .assertTrue (self .client .session .get ('_auth_user_id' , False ))
109
+ self .assertTrue (self .client .session .get ("passkey" , {}).get ("passkey" , False ))
110
+ self .assertEqual (self .client .session .get ("passkey" , {}).get ("name" ), "testKey" )
112
111
113
112
def test_base_username (self ):
114
113
authenticator = self .test_key_reg ()
115
114
self .client .get ('/auth/logout' )
116
115
session = self .session
117
- session ["base_username" ]= "test"
116
+ session ["base_username" ] = "test"
118
117
session .save (must_create = True )
119
118
self .client .cookies ["sessionid" ] = session .session_key
120
119
r = self .client .get (reverse ('passkeys:auth_begin' ))
121
- self .assertEquals (r .status_code , 200 )
120
+ self .assertEqual (r .status_code , 200 )
122
121
j = json .loads (r .content )
123
- self .assertEquals (j ['publicKey' ]['allowCredentials' ][0 ]['id' ],urlsafe_b64encode (authenticator .credential_id ).decode ("utf8" ).strip ('=' ))
122
+ self .assertEqual (j ['publicKey' ]['allowCredentials' ][0 ]['id' ], urlsafe_b64encode (authenticator .credential_id ).decode ("utf8" ).strip ('=' ))
124
123
125
124
def test_passkey_login_no_session (self ):
126
125
pass
@@ -130,14 +129,14 @@ def test_server_id_callable(self):
130
129
from test_app .tests .test_fido import get_server_id
131
130
settings .FIDO_SERVER_ID = get_server_id
132
131
r = self .client .get (reverse ('passkeys:auth_begin' ))
133
- self .assertEquals (r .status_code , 200 )
132
+ self .assertEqual (r .status_code , 200 )
134
133
j = json .loads (r .content )
135
- self .assertEquals (j ['publicKey' ]['rpId' ],'testserver1' )
134
+ self .assertEqual (j ['publicKey' ]['rpId' ],'testserver1' )
136
135
137
136
def test_server_name_callable (self ):
138
137
from test_app .tests .test_fido import get_server_name
139
138
settings .FIDO_SERVER_NAME = get_server_name
140
139
r = self .client .get (reverse ('passkeys:reg_begin' ))
141
- self .assertEquals (r .status_code , 200 )
140
+ self .assertEqual (r .status_code , 200 )
142
141
j = json .loads (r .content )
143
- self .assertEquals (j ['publicKey' ]['rp' ]["name" ],'MySite' )
142
+ self .assertEqual (j ['publicKey' ]['rp' ]["name" ], 'MySite' )
0 commit comments