Merge pull request #377 from dod-ccpo/email-not-unique

Handle AlreadyExistsError on user creation with non-unique email
This commit is contained in:
montana-mil 2018-10-09 10:24:24 -04:00 committed by GitHub
commit 4e24666f16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 27 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,14 +200,19 @@ def create_member(workspace_id):
form = NewMemberForm(http_request.form) form = NewMemberForm(http_request.form)
if form.validate(): if form.validate():
new_member = Workspaces.create_member(g.current_user, workspace, form.data) try:
return redirect( new_member = Workspaces.create_member(g.current_user, workspace, form.data)
url_for( return redirect(
"workspaces.workspace_members", url_for(
workspace_id=workspace.id, "workspaces.workspace_members",
newMemberName=new_member.user_name, workspace_id=workspace.id,
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,12 @@
<main class="usa-section usa-content"> <main class="usa-section usa-content">
<h1>Not Found</h1> {% if message %}
<h1>{{ message }}</h1>
{% else %}
<h1>An error occurred.</h1>
{% endif %}
</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")