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)
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))