@@ -213,6 +213,53 @@ def tearDown(self):
213
213
api_settings .PASSWORDLESS_MOBILE_NOREPLY_NUMBER = DEFAULTS ['PASSWORDLESS_MOBILE_NOREPLY_NUMBER' ]
214
214
215
215
216
+ def dummy_token_creator (user ):
217
+ token = Token .objects .create (key = "dummy" , user = user )
218
+ return (token , True )
219
+
220
+
221
+ class OverrideTokenCreationTests (APITestCase ):
222
+ def setUp (self ):
223
+ super ().setUp ()
224
+
225
+ api_settings .PASSWORDLESS_AUTH_TOKEN_CREATOR = 'tests.test_authentication.dummy_token_creator'
226
+ api_settings .PASSWORDLESS_AUTH_TYPES = ['EMAIL' ]
227
+ api_settings .PASSWORDLESS_EMAIL_NOREPLY_ADDRESS = 'noreply@example.com'
228
+
229
+ self .email = 'aaron@example.com'
230
+ self .url = '/auth/email/'
231
+ self .challenge_url = '/callback/auth/'
232
+
233
+ self .email_field_name = api_settings .PASSWORDLESS_USER_EMAIL_FIELD_NAME
234
+ self .user = User .objects .create (** {self .email_field_name : self .email })
235
+
236
+ def test_token_creation_gets_overridden (self ):
237
+ """Ensure that if we change the token creation function, the overridden one gets called"""
238
+ data = {'email' : self .email }
239
+ response = self .client .post (self .url , data )
240
+ self .assertEqual (response .status_code , status .HTTP_200_OK )
241
+
242
+ # Token sent to alias
243
+ callback_token = CallbackToken .objects .filter (user = self .user , is_active = True ).first ()
244
+ challenge_data = {'token' : callback_token }
245
+
246
+ # Try to auth with the callback token
247
+ challenge_response = self .client .post (self .challenge_url , challenge_data )
248
+ self .assertEqual (challenge_response .status_code , status .HTTP_200_OK )
249
+
250
+ # Verify Auth Token
251
+ auth_token = challenge_response .data ['token' ]
252
+ self .assertEqual (auth_token , Token .objects .filter (key = auth_token ).first ().key )
253
+ self .assertEqual ('dummy' , Token .objects .filter (key = auth_token ).first ().key )
254
+
255
+ def tearDown (self ):
256
+ api_settings .PASSWORDLESS_AUTH_TOKEN_CREATOR = DEFAULTS ['PASSWORDLESS_AUTH_TOKEN_CREATOR' ]
257
+ api_settings .PASSWORDLESS_AUTH_TYPES = DEFAULTS ['PASSWORDLESS_AUTH_TYPES' ]
258
+ api_settings .PASSWORDLESS_EMAIL_NOREPLY_ADDRESS = DEFAULTS ['PASSWORDLESS_EMAIL_NOREPLY_ADDRESS' ]
259
+ self .user .delete ()
260
+ super ().tearDown ()
261
+
262
+
216
263
class MobileLoginCallbackTokenTests (APITestCase ):
217
264
218
265
def setUp (self ):
0 commit comments