def test_token_password_change_wrong_token(self):
     from por.dashboard.security.views import change_password
     request = Request(method='POST', params={'token': u'notexistingtoken',
                                              'password': '******',
                                              'password_repeat': 'topsecret'})
     response = change_password(request)
     self.assertEqual(response['request'].msgs[0].message, u'Token doesn\'t exist.')
 def test_token_password_change_missmatch(self):
     email = u'*****@*****.**'
     self.add_user(email)
     token = self.generate_token(email)['token']
     from por.dashboard.security.views import change_password
     request = Request(method='POST', params={'token': token,
                                              'password': '******',
                                              'password_repeat': 'missmatch'})
     response = change_password(request)
     self.assertEqual(response['request'].msgs[0].message, u'Passwords missmatch.')
 def test_password_set(self):
     email = u'*****@*****.**'
     self.add_user(email)
     session = DBSession()
     self.assertEqual(session.query(User).filter_by(email=email).one().password, None)
     token = self.generate_token(email)['token']
     from por.dashboard.security.views import change_password
     request = Request(method='POST', params={'token': token,
                                              'password': '******',
                                              'password_repeat': 'topsecret'})
     response = change_password(request)
     self.assertEqual(response.headers.get('Location'),'/login_form')
     self.assertNotEqual(session.query(User).filter_by(email=email).one().password, None)
 def test_token_store_cleanup(self):
     email = u'*****@*****.**'
     self.add_user(email)
     self.generate_token(email)['token']
     token2 = self.generate_token(email)['token']
     session = DBSession()
     self.assertEqual(len(session.query(PasswordResetToken).join(User).filter(User.email == email).all()),1)
     from por.dashboard.security.views import change_password
     request = Request(method='POST', params={'token': token2,
                                              'password': '******',
                                              'password_repeat': 'topsecret'})
     response = change_password(request)
     self.assertEqual(response.headers.get('Location'),'/login_form')
     self.assertEqual(len(session.query(PasswordResetToken).join(User).filter(User.email == email).all()),0)
    def test_token_password_change(self):
        from pyramid_mailer import get_mailer
        email = u'*****@*****.**'
        self.add_user(email)
        response = self.generate_token(email)
        mailer = get_mailer(response['request'])
        self.assertTrue(len(mailer.outbox))

        from por.dashboard.security.views import change_password
        request = Request(method='POST', params={'token': response['token'],
                                                 'password': '******',
                                                 'password_repeat': 'topsecret'})
        response = change_password(request)
        self.assertEqual(response.headers.get('Location'),'/login_form')