def test_auth_reset_password(self): user = User.query.first() url = '/reset_password/' response = self.client.get(url) form = self.get_context_variable('form') self.assert_200(response) self.assert_template_used('reset_password.html') self.assertEqual(type(form), EmailForm) response = self.client.post( url, data={ 'email': user.email }, follow_redirects=True ) self.assert_template_used('account_not_activated.html') user.email_confirmed = True db.session.add(user) with mail.record_messages() as outbox: response = self.client.post( url, data={ 'email': user.email }, follow_redirects=True ) self.assertEqual(len(outbox), 1) email = str(outbox[0]) link = re.search(r'/reset_confirm/(.+)/">', email) url = '/reset_confirm/' + link.group(1) + '/' response = self.client.get(url) form = self.get_context_variable('form') self.assert_template_used('new_password.html') self.assertEqual(type(form), PasswordForm) response = self.client.post( url, data={ 'password': '******' }, follow_redirects=True ) self.assert_template_used('login.html') msg = 'Password changed successfully. Please ' msg += 'login with your new password.' self.assertIn(msg, response.data) self.login(user.email, 'NewPassword') self.assert_template_used('index.html') self.client.get('/logout/')
def test_home_adopt_puppy(self): puppy = Puppy.query.first() user = User.query.first() url = '/puppy/' + str(puppy.id) + '/adopt/' response = self.client.get(url) self.assert_redirects(response, '/signup/?next=' + url) with app.app_context(): response = self.login(user.email, 'password', url) self.assert_template_used('account_not_activated.html') url2 = '/activate/bad-token/' response = self.client.get(url2) self.assert_404(response) url2 = '/activate/' + self.get_context_variable('token') + '/' with mail.record_messages() as outbox: response = self.client.get(url2) self.assert_redirects(response, '/') response = self.client.get('/') self.assertIn('Account activation email sent.', response.data) self.assertEqual(len(outbox), 1) email = str(outbox[0]) link = re.search(r'/confirm/(.+)/\?next', email) url2 = '/confirm/' + link.group(1) + '/' response = self.client.get(url2) self.assert_redirects(response, '/login/') response = self.client.get('/login/') self.assertIn( 'Thanks! Your account has been activated.', response.data) self.client.get(url) self.assert_template_used('adopt.html') revised_puppy = Puppy.query.first() self.assertEqual(revised_puppy.adopter[0], user) self.assertEqual(self.get_context_variable('puppy'), revised_puppy) self.client.get('/logout/')
def test_auth_send_email_confirmation(self): user = User(email=test_email, password='******') db.session.add(user) response = self.client.get('/confirm/bad-token/') self.assert_404(response) with mail.record_messages() as outbox: views.auth.send_email_confirmation(user) self.assertEqual(len(outbox), 1) email = str(outbox[0]) link = re.search(r'/confirm/(.+)/\?next', email) url = '/confirm/' + link.group(1) + '/' response = self.client.get(url) self.assert_redirects(response, '/login/') response = self.client.get('/login/') self.assertIn( 'Thanks! Your account has been activated.', response.data)