def test_is_valid(self, mock_now): now = tz_now() mock_now.return_value = now token = RequestToken() admin = RequestTokenAdmin(RequestToken, None) token.not_before_time = now + datetime.timedelta(minutes=1) self.assertTrue(token.not_before_time > now) self.assertFalse(admin.is_valid(token)) token.not_before_time = None token.expiration_time = now - datetime.timedelta(minutes=1) self.assertTrue(token.expiration_time < now) self.assertFalse(admin.is_valid(token)) token.expiration_time = None token.max_uses = 1 token.used_to_date = 1 self.assertFalse(admin.is_valid(token)) # finally make it valid token.max_uses = 10 self.assertTrue(admin.is_valid(token))
def test_clean(self): token = RequestToken(login_mode=RequestToken.LOGIN_MODE_NONE, # user=self.user ) token.clean() # set a user, should now fail validation token.user = self.user self.assertRaises(ValidationError, token.clean) # request mode token.login_mode = RequestToken.LOGIN_MODE_REQUEST token.clean() token.user = None self.assertRaises(ValidationError, token.clean) def reset_session(): """Reset properties so that token passes validation.""" token.login_mode = RequestToken.LOGIN_MODE_SESSION token.user = self.user token.issued_at = tz_now() token.expiration_time = token.issued_at + datetime.timedelta( minutes=1) token.max_uses = 1 def assertValidationFails(field_name): with self.assertRaises(ValidationError) as ctx: token.clean() self.assertTrue(field_name in dict(ctx.exception)) # check the rest_session works! reset_session() token.clean() token.max_uses = 10 assertValidationFails('max_uses') reset_session() token.user = None assertValidationFails('user') reset_session() token.expiration_time = None assertValidationFails('expiration_time')