Handle AlreadyExistsError on user creation with non-unique email

This commit is contained in:
Montana 2018-10-08 10:36:40 -04:00
parent e5753762fa
commit 3c95063293
5 changed files with 23 additions and 25 deletions

View File

@ -9,12 +9,12 @@ def make_error_pages(app):
# pylint: disable=unused-variable # pylint: disable=unused-variable
def not_found(e): def not_found(e):
app.logger.error(e.message) app.logger.error(e.message)
return render_template("not_found.html"), 404 return render_template("error.html", message="Not Found"), 404
@app.errorhandler(exceptions.UnauthenticatedError) @app.errorhandler(exceptions.UnauthenticatedError)
# pylint: disable=unused-variable # pylint: disable=unused-variable
def unauthorized(e): def unauthorized(e):
app.logger.error(e.message) app.logger.error(e.message)
return render_template("unauthenticated.html"), 401 return render_template("error.html", message="Log in Failed"), 401
return app return app

View File

@ -10,7 +10,7 @@ from flask import (
url_for, url_for,
) )
from atst.domain.exceptions import UnauthorizedError from atst.domain.exceptions import UnauthorizedError, AlreadyExistsError
from atst.domain.projects import Projects from atst.domain.projects import Projects
from atst.domain.reports import Reports from atst.domain.reports import Reports
from atst.domain.workspaces import Workspaces from atst.domain.workspaces import Workspaces
@ -200,6 +200,7 @@ def create_member(workspace_id):
form = NewMemberForm(http_request.form) form = NewMemberForm(http_request.form)
if form.validate(): if form.validate():
try:
new_member = Workspaces.create_member(g.current_user, workspace, form.data) new_member = Workspaces.create_member(g.current_user, workspace, form.data)
return redirect( return redirect(
url_for( url_for(
@ -208,6 +209,10 @@ def create_member(workspace_id):
newMemberName=new_member.user_name, newMemberName=new_member.user_name,
) )
) )
except AlreadyExistsError:
return render_template(
"error.html", message="There was an error processing your request."
)
else: else:
return render_template( return render_template(
"workspaces/members/new.html", workspace=workspace, form=form "workspaces/members/new.html", workspace=workspace, form=form

View File

@ -4,9 +4,8 @@
<main class="usa-section usa-content"> <main class="usa-section usa-content">
<h1>Not Found</h1> <h1>{{ message }}</h1>
</main> </main>
{% endblock %} {% endblock %}

View File

@ -1,12 +0,0 @@
{% extends "error_base.html" %}
{% block content %}
<main class="usa-section usa-content">
<h1>Log in Failed</h1>
</main>
{% endblock %}

View File

@ -2,7 +2,7 @@ import pytest
from uuid import uuid4 from uuid import uuid4
from atst.domain.users import Users from atst.domain.users import Users
from atst.domain.exceptions import NotFoundError from atst.domain.exceptions import NotFoundError, AlreadyExistsError
DOD_ID = "my_dod_id" DOD_ID = "my_dod_id"
@ -12,6 +12,12 @@ def test_create_user():
assert user.atat_role.name == "developer" assert user.atat_role.name == "developer"
def test_create_user_with_existing_email():
Users.create(DOD_ID, "developer", email="thisusersemail@usersRus.com")
with pytest.raises(AlreadyExistsError):
Users.create(DOD_ID, "admin", email="thisusersemail@usersRus.com")
def test_create_user_with_nonexistent_role(): def test_create_user_with_nonexistent_role():
with pytest.raises(NotFoundError): with pytest.raises(NotFoundError):
Users.create(DOD_ID, "nonexistent") Users.create(DOD_ID, "nonexistent")