Merge pull request #772 from alphagov/email-registered-users

Add api client call to email users that are already registered
This commit is contained in:
Rebecca Law
2016-07-12 13:12:01 +01:00
committed by GitHub
4 changed files with 26 additions and 23 deletions

View File

@@ -34,12 +34,8 @@ def register():
form = RegisterUserForm()
if form.validate_on_submit():
registered = _do_registration(form, send_sms=False)
if registered:
return redirect(url_for('main.registration_continue'))
else:
flash('There was an error registering your account')
return render_template('views/register.html', form=form), 400
_do_registration(form, send_sms=False)
return redirect(url_for('main.registration_continue'))
return render_template('views/register.html', form=form)
@@ -54,12 +50,9 @@ def register_from_invite():
if form.validate_on_submit():
if form.service.data != invited_user['service'] or form.email_address.data != invited_user['email_address']:
abort(400)
registered = _do_registration(form, send_email=False)
if registered:
invite_api_client.accept_invite(invited_user['service'], invited_user['id'])
return redirect(url_for('main.verify'))
else:
flash('There was an error registering your account')
_do_registration(form, send_email=False)
invite_api_client.accept_invite(invited_user['service'], invited_user['id'])
return redirect(url_for('main.verify'))
form.service.data = invited_user['service']
form.email_address.data = invited_user['email_address']
@@ -87,9 +80,12 @@ def _do_registration(form, service=None, send_sms=True, send_email=True):
user_api_client.send_verify_code(user.id, 'sms', user.mobile_number)
session['expiry_date'] = str(datetime.utcnow() + timedelta(hours=1))
session['user_details'] = {"email": user.email_address, "id": user.id}
return True
else:
return False
if send_email:
user = user_api_client.get_user_by_email(form.email_address.data)
user_api_client.send_already_registered_email(user.id, user.email_address)
session['expiry_date'] = str(datetime.utcnow() + timedelta(hours=1))
session['user_details'] = {"email": user.email_address, "id": user.id}
@main.route('/registration-continue')

View File

@@ -75,6 +75,11 @@ class UserApiClient(BaseAPIClient):
endpoint = '/user/{0}/email-verification'.format(user_id)
self.post(endpoint, data=data)
def send_already_registered_email(self, user_id, to):
data = {'email': to}
endpoint = '/user/{0}/email-already-registered'.format(user_id)
self.post(endpoint, data=data)
def check_verify_code(self, user_id, code, code_type):
data = {'code_type': code_type, 'code': code}
endpoint = '/user/{}/verify/code'.format(user_id)

View File

@@ -123,9 +123,10 @@ def test_should_return_200_if_password_is_blacklisted(app_,
assert 'That password is blacklisted, too common' in response.get_data(as_text=True)
def test_register_with_existing_email_returns_error(app_,
api_user_active,
mock_get_user_by_email):
def test_register_with_existing_email_sends_emails(app_,
api_user_active,
mock_get_user_by_email,
mock_send_already_registered_email):
user_data = {
'name': 'Already Hasaccount',
'email_address': api_user_active.email_address,
@@ -136,9 +137,5 @@ def test_register_with_existing_email_returns_error(app_,
with app_.test_request_context():
response = app_.test_client().post(url_for('main.register'),
data=user_data)
assert response.status_code == 400
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
element = page.find('h1')
assert element.text == 'Create an account'
flash_banner = page.find('div', class_='banner-dangerous').string.strip()
assert flash_banner == 'There was an error registering your account'
assert response.status_code == 302
assert response.location == url_for('main.registration_continue', _external=True)

View File

@@ -1121,3 +1121,8 @@ def mock_events(mocker):
return {'some': 'data'}
return mocker.patch('app.events_api_client.create_event', side_effect=_create_event)
@pytest.fixture(scope='function')
def mock_send_already_registered_email(mocker):
return mocker.patch('app.user_api_client.send_already_registered_email')