예제 #1
0
 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))
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
    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)
예제 #8
0
    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)
예제 #9
0
 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))