def test_resetpassword_form_unknown_passcode(self):
        from ptahcrowd.resetpassword import ResetPasswordForm

        request = self.make_request(subpath=('unknown', ))

        form = ResetPasswordForm(None, request)
        res = form.update()

        msg = request.render_messages()
        self.assertIn("Passcode is invalid.", msg)
        self.assertEqual(res.headers['location'],
                         'http://example.com/resetpassword.html')
    def test_resetpassword_form_update(self):
        from ptahcrowd.provider import CrowdUser
        from ptahcrowd.resetpassword import ResetPasswordForm

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

        passcode = ptah.pwd_tool.generate_passcode(user)

        request = self.make_request(subpath=(passcode, ))

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

        #        self.assertEqual(form.title, user.name)
        self.assertEqual(form.passcode, passcode)
    def test_resetpassword_form_change_errors(self):
        from ptahcrowd.provider import CrowdUser
        from ptahcrowd.resetpassword import ResetPasswordForm

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

        passcode = ptah.pwd_tool.generate_passcode(user)

        request = self.make_request(subpath=(passcode, ),
                                    POST={
                                        'password': '******',
                                        'confirm_password': '******',
                                        'form.buttons.change': 'Change'
                                    })
        request.environ['HTTP_HOST'] = 'example.com'

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

        msg = request.render_messages()
        self.assertIn("Please fix indicated errors.", msg)
    def test_resetpassword_form_change(self):
        from ptahcrowd.provider import CrowdUser
        from ptahcrowd.resetpassword import ResetPasswordForm

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

        passcode = ptah.pwd_tool.generate_passcode(user)

        request = self.make_request(subpath=(passcode, ),
                                    POST={
                                        'password': '******',
                                        'confirm_password': '******',
                                        'form.buttons.change': 'Change'
                                    })
        request.environ['HTTP_HOST'] = 'example.com'

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

        msg = request.render_messages()
        self.assertIn("You have successfully changed your password.", msg)
        self.assertEqual(res.headers['location'], 'http://example.com')
        self.assertTrue(ptah.pwd_tool.check(user.password, '123456'))