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