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
def not_found(e):
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)
# pylint: disable=unused-variable
def unauthorized(e):
app.logger.error(e.message)
return render_template("unauthenticated.html"), 401
return render_template("error.html", message="Log in Failed"), 401
return app

View File

@ -10,7 +10,7 @@ from flask import (
url_for,
)
from atst.domain.exceptions import UnauthorizedError
from atst.domain.exceptions import UnauthorizedError, AlreadyExistsError
from atst.domain.projects import Projects
from atst.domain.reports import Reports
from atst.domain.workspaces import Workspaces
@ -200,14 +200,19 @@ def create_member(workspace_id):
form = NewMemberForm(http_request.form)
if form.validate():
new_member = Workspaces.create_member(g.current_user, workspace, form.data)
return redirect(
url_for(
"workspaces.workspace_members",
workspace_id=workspace.id,
newMemberName=new_member.user_name,
try:
new_member = Workspaces.create_member(g.current_user, workspace, form.data)
return redirect(
url_for(
"workspaces.workspace_members",
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:
return render_template(
"workspaces/members/new.html", workspace=workspace, form=form

View File

@ -4,9 +4,12 @@
<main class="usa-section usa-content">
<h1>Not Found</h1>
{% if message %}
<h1>{{ message }}</h1>
{% else %}
<h1>An error occurred.</h1>
{% endif %}
</main>
{% 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 atst.domain.users import Users
from atst.domain.exceptions import NotFoundError
from atst.domain.exceptions import NotFoundError, AlreadyExistsError
DOD_ID = "my_dod_id"
@ -12,6 +12,12 @@ def test_create_user():
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():
with pytest.raises(NotFoundError):
Users.create(DOD_ID, "nonexistent")