def test_resetpassword_cancel(self):
        from ptahcrowd.resetpassword import ResetPassword
        request = self.make_request(POST={'form.buttons.cancel': 'Cancel'})

        form = ResetPassword(None, request)
        res = form()

        self.assertIsInstance(res, HTTPFound)
        self.assertEqual(res.headers['location'], 'http://example.com')
    def test_resetpassword_required(self):
        from ptahcrowd.resetpassword import ResetPassword
        request = self.make_request(POST={'form.buttons.reset': 'Reset'})

        form = ResetPassword(None, request)
        form.update_form()

        msg = request.render_messages()
        self.assertIn("The system can't restore the password for this user.",
                      msg)
    def test_resetpassword(self):
        from ptahcrowd.resetpassword import ResetPassword
        from ptahcrowd.resetpassword import ResetPasswordTemplate
        from ptahcrowd.provider import CrowdUser

        user = CrowdUser(username='******', email='email')
        CrowdUser.__type__.add(user)

        data = [1, None]

        def send(self):
            data[0] = 2
            data[1] = self.passcode

        ResetPasswordTemplate.send = send

        request = self.make_request(POST={
            'login': '******',
            'form.buttons.reset': 'Reset'
        })

        form = ResetPassword(None, request)
        res = form()

        msg = request.render_messages()
        self.assertIn("We have started resetting your password.", msg)

        self.assertIsInstance(res, HTTPFound)
        self.assertEqual(res.headers['location'], 'http://example.com')
        self.assertEqual(data[0], 2)

        principal = ptah.pwd_tool.get_principal(data[1])
        self.assertEqual(principal.username, 'username')
        self.assertEqual(principal.email, 'email')

        del ResetPasswordTemplate.send