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")