@@ -373,9 +373,11 @@ def test_nomcom_dressing_on_profile(self):
373373
374374 def test_reset_password (self ):
375375 url = urlreverse (ietf .ietfauth .views .password_reset )
376+ email = 'someone@example.com'
377+ password = 'foobar'
376378
377- user = User .objects .create (username = "someone@example.com" , email = "someone@example.com" )
378- user .set_password ("forgotten" )
379+ user = User .objects .create (username = email , email = email )
380+ user .set_password (password )
379381 user .save ()
380382 p = Person .objects .create (name = "Some One" , ascii = "Some One" , user = user )
381383 Email .objects .create (address = user .username , person = p , origin = user .username )
@@ -414,6 +416,39 @@ def test_reset_password(self):
414416 self .assertEqual (len (q ("form .has-error" )), 0 )
415417 self .assertTrue (self .username_in_htpasswd_file (user .username ))
416418
419+ # reuse reset url
420+ r = self .client .get (confirm_url )
421+ self .assertEqual (r .status_code , 404 )
422+
423+ # login after reset request
424+ empty_outbox ()
425+ user .set_password (password )
426+ user .save ()
427+
428+ r = self .client .post (url , { 'username' : user .username })
429+ self .assertEqual (r .status_code , 200 )
430+ self .assertEqual (len (outbox ), 1 )
431+ confirm_url = self .extract_confirm_url (outbox [- 1 ])
432+
433+ r = self .client .post (urlreverse (ietf .ietfauth .views .login ), {'username' : email , 'password' : password })
434+
435+ r = self .client .get (confirm_url )
436+ self .assertEqual (r .status_code , 404 )
437+
438+ # change password after reset request
439+ empty_outbox ()
440+
441+ r = self .client .post (url , { 'username' : user .username })
442+ self .assertEqual (r .status_code , 200 )
443+ self .assertEqual (len (outbox ), 1 )
444+ confirm_url = self .extract_confirm_url (outbox [- 1 ])
445+
446+ user .set_password ('newpassword' )
447+ user .save ()
448+
449+ r = self .client .get (confirm_url )
450+ self .assertEqual (r .status_code , 404 )
451+
417452 def test_review_overview (self ):
418453 review_req = ReviewRequestFactory ()
419454 assignment = ReviewAssignmentFactory (review_request = review_req ,reviewer = EmailFactory (person__user__username = 'reviewer' ))
0 commit comments