def test_request_password_reset(self): """ Request password reset generates a link and sends message """ with events.events.disconnect_receivers(): with mail.record_messages() as out: with self.app.test_request_context(): user = self.create_user() url = 'http://my.confirm.url/' user_service.request_password_reset(user, url) self.assertTrue(type(user.password_link) is str) self.assertEqual(1, len(out))
def test_request_password_reset_emits_event(self): """ Requesting password reset emits event """ with events.events.disconnect_receivers(): with mail.record_messages() as out: with self.app.test_request_context(): user = self.create_user() url = 'http://my.confirm.url/' spy = mock.Mock() events.password_change_requested_event.connect(spy, weak=False) user_service.request_password_reset(user, url) spy.assert_called_with(user)
def test_account_confirmation_message_send(self): """ Account confirmation message can be sent """ user = User(email='*****@*****.**', password='******') with mail.record_messages() as out: with self.app.test_request_context(): url = 'http://my.confirm.url/' user_service.require_confirmation = True user_service.send_welcome_message(user, url) msg = out[0] self.assertTrue('Confirm email' in msg.html) self.assertTrue('Confirm email' in msg.body) self.assertTrue(user.email_link in msg.html) self.assertTrue(user.email_link in msg.body)
def test_send_password_message(self): """ Sending confirmation message to change password """ with events.events.disconnect_receivers(): user = self.create_user() user.generate_password_link() user_service.save(user) with mail.record_messages() as out: with self.app.test_request_context(): url = 'http://my.confirm.url/' user_service.send_password_change_message(user, url) msg = out[0] self.assertTrue('change your password' in msg.html.lower()) self.assertTrue('change your password' in msg.body.lower()) self.assertTrue(user.password_link in msg.html) self.assertTrue(user.password_link in msg.body)
def test_change_email_message_resend(self): """ Email change confirmation message can be resent""" with events.events.disconnect_receivers(): with mail.record_messages() as out: u = self.create_user() u.email = '*****@*****.**' initial_link = u.email_link url = 'http://my.confirm.url/' user_service.resend_email_changed_message(u, url) new_link = u.email_link self.assertNotEqual(initial_link, new_link) # regenerated self.assertTrue('confirm email' in out[0].html.lower()) self.assertTrue('confirm email' in out[0].body.lower()) self.assertTrue(new_link in out[0].html) self.assertTrue(new_link in out[0].body)
def test_change_email_message_send(self): """ Email change confirmation message can be sent""" with events.events.disconnect_receivers(): user = self.create_user() user.email = '*****@*****.**' self.assertFalse(user.email_confirmed) with mail.record_messages() as out: with self.app.test_request_context(): url = 'http://my.confirm.url/' user_service.send_email_changed_message(user, url) msg = out[0] self.assertTrue('confirm email' in msg.html.lower()) self.assertTrue('confirm email' in msg.body.lower()) self.assertTrue(user.email_link in msg.html) self.assertTrue(user.email_link in msg.body)
def test_changing_email_sends_email(self): """ Send email message with confirmation link when changing email""" with events.events.disconnect_receivers(): with mail.record_messages() as out: with self.app.test_request_context(): u = self.create_user() user_service.force_login(u) self.assertTrue(current_user.is_authenticated) res = user_service.change_email(u, '*****@*****.**') self.assertIsInstance(res, User) self.assertEqual('*****@*****.**', u.email_new) self.assertIsNotNone(u.email_link) self.assertEquals(1, len(out)) # regression: ensure email sent to **new** email not the current one self.assertEquals(1, len(out[0].recipients)) self.assertIn(u.email_new, out[0].recipients)
def test_account_confirmation_message_resend(self): """ Account confirmation message can be resent """ user_data = dict(email='*****@*****.**', password='******') with events.events.disconnect_receivers(): with self.app.test_request_context(): user_service.require_confirmation = True u = user_service.register(user_data=user_data, send_welcome=False) initial_link = u.email_link with mail.record_messages() as out: url = 'http://my.confirm.url/' user_service.resend_welcome_message(u, url) resend_link = u.email_link self.assertNotEqual(initial_link, resend_link) msg = out[0] self.assertTrue('Confirm email' in msg.html) self.assertTrue('Confirm email' in msg.body)
def test_register_send_welcome_message(self): """ Registration sends welcome message""" user_data = dict(email='*****@*****.**', password='******') with mail.record_messages() as out: user_service.register(user_data=user_data) self.assertEquals(1, len(out))