diff --git a/atst/routes/errors.py b/atst/routes/errors.py
index b539ce2a..40a00c26 100644
--- a/atst/routes/errors.py
+++ b/atst/routes/errors.py
@@ -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
diff --git a/atst/routes/workspaces.py b/atst/routes/workspaces.py
index 31f35f38..583d4b65 100644
--- a/atst/routes/workspaces.py
+++ b/atst/routes/workspaces.py
@@ -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
diff --git a/templates/not_found.html b/templates/error.html
similarity index 54%
rename from templates/not_found.html
rename to templates/error.html
index 59cc223f..c8714c01 100644
--- a/templates/not_found.html
+++ b/templates/error.html
@@ -4,9 +4,12 @@
-Not Found
+{% if message %}
+ {{ message }}
+{% else %}
+ An error occurred.
+{% endif %}
{% endblock %}
-
diff --git a/templates/unauthenticated.html b/templates/unauthenticated.html
deleted file mode 100644
index 8fabbdf9..00000000
--- a/templates/unauthenticated.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "error_base.html" %}
-
-{% block content %}
-
-
-
-Log in Failed
-
-
-
-{% endblock %}
-
diff --git a/tests/domain/test_users.py b/tests/domain/test_users.py
index 72917f5b..145e8f93 100644
--- a/tests/domain/test_users.py
+++ b/tests/domain/test_users.py
@@ -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")