def test_email_already_confirmed_redirect(self, db, testapp): with mail.record_messages() as outbox: res = testapp.get(url_for('auth.register')) form = res.forms['registerForm'] form['username'] = '******' form['email'] = '*****@*****.**' form['password'] = '******' form['confirm'] = 'secret' form.submit() body_html = outbox[0].html groups = re.search('<a href=\"http://localhost(.*)\">', body_html) confirmation_url = groups[1] user = User.get_by_id(1) login_user(user) user.email_confirmed = True # FIXME: .get() has a different context. No logged in user response = testapp.get(confirmation_url) flashed_messages = get_flashed_messages() assert 'You have already verified your email address.' in flashed_messages assert response.status_code == 302 assert urlparse(response.location).path == url_for('public.home')
def test_deliver_password_reset_email(self, token): """ Deliver a password reset email. """ with mail.record_messages() as outbox: user = User.find_by_identity('*****@*****.**') deliver_password_reset_email(user.id, token) assert len(outbox) == 1 assert token in outbox[0].body
def test_deliver_contact_form_email(self): """ Deliver contact email.""" form = { 'email': '*****@*****.**', 'message': 'Test message from application.' } with mail.record_messages() as outbox: deliver_contact_email(form.get('email'), form.get('message')) assert len(outbox) == 1 assert form.get('email') in outbox[0].body
def test_deliver_support_email(self): """ Deliver a contact email. """ form = { 'email': '*****@*****.**', 'message': 'Test message from Parsavvy.' } with mail.record_messages() as outbox: # deliver_contact_email(form.get('email'), form.get('message')) send_contact_us_email(form.get('email'), form.get('message')) assert len(outbox) == 1 assert form.get('email') in outbox[0].body
def test_confirm_email_sent(self, db, testapp): # Goes to registration page with mail.record_messages() as outbox: res = testapp.get(url_for('auth.register')) form = res.forms['registerForm'] form['username'] = '******' form['email'] = '*****@*****.**' form['password'] = '******' form['confirm'] = 'secret' res = form.submit() assert len(outbox) == 1 assert 'Confirm Your Email Address' in outbox[0].subject
def test_contact(self): # User fills in form and clicks 'Send Message' data = { 'full_name': 'Troubled User', 'email': '*****@*****.**', 'subject': 'Help me!', 'message': 'I have the blue screen of death! Call the doctor!', } with mail.record_messages() as outbox: # Application sends email to admin response = self.client.post('/mail/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert len(outbox) == 1 subject = '[%s] Message from %s: %s' % (current_app.config['APP_NAME'], data.get('full_name'), data.get('subject')) assert outbox[0].subject == subject self.assert_200(response)
def test_password_reset(self): # User enters email for account that DNE data = {'email': '*****@*****.**'} response = self.client.post('/users/password/reset/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert 'Sorry, no user found for that email address.' in response.data self.assert_200(response) # User enters email and clicks 'Send instructions' data = {'email': '*****@*****.**'} user = User.query.filter_by(email=data.get('email')).first() assert user is not None assert user.activation_key is None with mail.record_messages() as outbox: # Application sends password reset email response = self.client.post('/users/password/reset/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert len(outbox) == 1 assert outbox[0].subject == "Recover your password" user = User.query.filter_by(email=data.get('email')).first() assert user.activation_key is not None # User enters new password data = { 'password': '******', 'password_again': 'new password', } user = User.query.filter_by(activation_key=user.activation_key) \ .filter_by(email=user.email).first() assert user is not None rv = self.client.put('/users/password/%s/%s/' % (user.email, user.activation_key), data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) self.assert_200(rv) assert 'success' in rv.data user = User.query.filter_by(email='*****@*****.**').first() assert user is not None assert user.activation_key is None assert user.check_password(data.get('password')) is True
def test_password_reset(self): # User enters email for account that DNE data = {'email': '*****@*****.**'} response = self.client.post('/users/password/reset/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert 'Sorry, no user found for that email address.' in response.data self.assert_200(response) # User enters email and clicks 'Send instructions' data = {'email': '*****@*****.**'} user = User.query.filter_by(email=data.get('email')).first() assert user is not None assert user.activation_key is None with mail.record_messages() as outbox: # Application sends password reset email response = self.client.post('/users/password/reset/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert len(outbox) == 1 assert outbox[0].subject == "Recover your password" user = User.query.filter_by(email=data.get('email')).first() assert user.activation_key is not None # User enters new password data = { 'password': '******', 'password_again': 'new password', } user = User.query.filter_by(activation_key=user.activation_key) \ .filter_by(email=user.email).first() assert user is not None rv = self.client.put( '/users/password/%s/%s/' % (user.email, user.activation_key), data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) self.assert_200(rv) assert 'success' in rv.data user = User.query.filter_by(email='*****@*****.**').first() assert user is not None assert user.activation_key is None assert user.check_password(data.get('password')) is True
def test_email_confirmation_no_user_redirect(self, db, testapp): with mail.record_messages() as outbox: res = testapp.get(url_for('auth.register')) form = res.forms['registerForm'] form['username'] = '******' form['email'] = '*****@*****.**' form['password'] = '******' form['confirm'] = 'secret' form.submit() body_html = outbox[0].html groups = re.search('<a href=\"http://localhost(.*)\">', body_html) confirmation_url = groups[1] + 'wrong' response = testapp.get(confirmation_url) assert response.status_code == 302 assert urlparse(response.location).path == url_for('public.home')
def test_email_confirmation(self, db, testapp): with mail.record_messages() as outbox: res = testapp.get(url_for('auth.register')) form = res.forms['registerForm'] form['username'] = '******' form['email'] = '*****@*****.**' form['password'] = '******' form['confirm'] = 'secret' form.submit() body_html = outbox[0].html groups = re.search('<a href=\"http://localhost(.*)\">', body_html) confirmation_url = groups[1] testapp.get(confirmation_url) assert User.get_by_id(1).email_confirmed is True
def test_contact(self): # User fills in form and clicks 'Send Message' data = { 'full_name': 'Troubled User', 'email': '*****@*****.**', 'subject': 'Help me!', 'message': 'I have the blue screen of death! Call the doctor!', } with mail.record_messages() as outbox: # Application sends email to admin response = self.client.post('/mail/', data=json.dumps(data), content_type='application/json', environ_base=self.ENVIRON_BASE) assert len(outbox) == 1 subject = '[%s] Message from %s: %s' % ( current_app.config['APP_NAME'], data.get('full_name'), data.get('subject')) assert outbox[0].subject == subject self.assert_200(response)