def test_register(self):
     """ Can register new user """
     with user_events.disconnect_receivers():
         user_data = dict(email='*****@*****.**', password='******')
         user = user_service.register(user_data=user_data,
                                      send_welcome=False)
         self.assertIsInstance(user, User)
         self.assertEqual(1, user.id)
 def test_register_returns_validation_errors(self):
     """ Registering returns validation error on bad data """
     with user_events.disconnect_receivers():
         user_data = dict(email='not.email', password='******')
         result = user_service.register(user_data=user_data,
                                        send_welcome=False)
         self.assertIsInstance(result, Result)
         self.assertFalse(result)
 def test_register_emits_event(self):
     """ Registration emits event """
     event = events.register_event
     user_data = dict(email='*****@*****.**', password='******')
     with user_events.disconnect_receivers():
         spy = mock.Mock()
         event.connect(spy, weak=False)
         user = user_service.register(user_data=user_data,
                                      send_welcome=False)
         spy.assert_called_with(user)
    def test_register_password_can_be_verified(self):
        """ REGRESSION: Password provided at registration can be verified """
        user_data = dict(email='*****@*****.**', password='******')
        with user_events.disconnect_receivers():
            user = user_service.register(user_data=user_data,
                                         send_welcome=False)

        verified = user.verify_password(user_data['password'])
        self.assertTrue(verified)

        password = 222222
        user.password = password
        user_service.save(user)
        verified = user.verify_password(password)
        self.assertTrue(verified)
    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)
Example #6
0
    def dispatch_request(self):
        if current_user.is_authenticated:
            return redirect('/')

        cfg = current_app.config
        send_welcome = cfg.get('USER_SEND_WELCOME_MESSAGE')
        base_confirm_url = cfg.get('USER_BASE_EMAIL_CONFIRM_URL')
        if not base_confirm_url:
            base_confirm_url = url_for('user.confirm.email.request',
                                       _external=True)

        form = self.form(schema=self.schema())
        if form.validate_on_submit():
            data = {}
            for field in self.data_fields:
                data[field] = getattr(form, field).data
            user = user_service.register(user_data=data,
                                         send_welcome=send_welcome,
                                         base_confirm_url=base_confirm_url)

            if not user:
                redirect(url_for(self.redirect_fail_endpoint))
            elif user and user_service.require_confirmation:
                return redirect(url_for(self.redirect_success_endpoint))
            else:
                user_service.force_login(user)
                if self.flash:
                    flash(self.force_login_message, 'success')
                return redirect(self.force_login_redirect)

        elif form.is_submitted():
            if self.flash:
                flash(self.invalid_message, 'danger')

        params = dict(form=form)
        if self.params:
            additional = deepcopy(self.params)
            params = params.update(additional)

        return render_template(self.template, **params)
 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))