From 6a53871455b1c9c50c30ceacd42eb942b49c7fd0 Mon Sep 17 00:00:00 2001 From: Ben Thorner Date: Wed, 15 Sep 2021 15:21:20 +0100 Subject: [PATCH] Restructure govuk-alerts endpoint to be internal In response to: https://github.com/alphagov/notifications-api/pull/3305#pullrequestreview-726672421 Previously this was added among the public /v2 endpoints, but it's only meant for internal use. While only the govuk-alerts app would be able to access it, the location and /v2 URL suggested otherwise. This restructures the endpoint so it resembles other internal ones. --- app/__init__.py | 16 ++++++---------- {tests/app/v2 => app}/govuk_alerts/__init__.py | 0 .../get_broadcasts.py => govuk_alerts/rest.py} | 14 +++++++++++--- app/v2/govuk_alerts/__init__.py | 11 ----------- tests/app/authentication/test_authentication.py | 2 +- tests/app/govuk_alerts/__init__.py | 0 .../{v2 => }/govuk_alerts/test_get_broadcasts.py | 2 +- 7 files changed, 19 insertions(+), 26 deletions(-) rename {tests/app/v2 => app}/govuk_alerts/__init__.py (100%) rename app/{v2/govuk_alerts/get_broadcasts.py => govuk_alerts/rest.py} (75%) delete mode 100644 app/v2/govuk_alerts/__init__.py create mode 100644 tests/app/govuk_alerts/__init__.py rename tests/app/{v2 => }/govuk_alerts/test_get_broadcasts.py (95%) diff --git a/app/__init__.py b/app/__init__.py index 3e80457d2..21682fa9e 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -133,6 +133,7 @@ def register_blueprint(application): from app.authentication.auth import ( requires_admin_auth, requires_auth, + requires_govuk_alerts_auth, requires_no_auth, ) from app.billing.rest import billing_blueprint @@ -140,6 +141,7 @@ def register_blueprint(application): from app.complaint.complaint_rest import complaint_blueprint from app.email_branding.rest import email_branding_blueprint from app.events.rest import events as events_blueprint + from app.govuk_alerts.rest import govuk_alerts_blueprint from app.inbound_number.rest import inbound_number_blueprint from app.inbound_sms.rest import inbound_sms as inbound_sms_blueprint from app.job.rest import job_blueprint @@ -269,18 +271,15 @@ def register_blueprint(application): broadcast_message_blueprint.before_request(requires_admin_auth) application.register_blueprint(broadcast_message_blueprint) + govuk_alerts_blueprint.before_request(requires_govuk_alerts_auth) + application.register_blueprint(govuk_alerts_blueprint) + def register_v2_blueprints(application): - from app.authentication.auth import ( - requires_auth, - requires_govuk_alerts_auth, - ) + from app.authentication.auth import requires_auth from app.v2.broadcast.post_broadcast import ( v2_broadcast_blueprint as post_broadcast, ) - from app.v2.govuk_alerts.get_broadcasts import ( - v2_govuk_alerts_blueprint as get_broadcasts, - ) from app.v2.inbound_sms.get_inbound_sms import ( v2_inbound_sms_blueprint as get_inbound_sms, ) @@ -321,9 +320,6 @@ def register_v2_blueprints(application): post_broadcast.before_request(requires_auth) application.register_blueprint(post_broadcast) - get_broadcasts.before_request(requires_govuk_alerts_auth) - application.register_blueprint(get_broadcasts) - def init_app(app): diff --git a/tests/app/v2/govuk_alerts/__init__.py b/app/govuk_alerts/__init__.py similarity index 100% rename from tests/app/v2/govuk_alerts/__init__.py rename to app/govuk_alerts/__init__.py diff --git a/app/v2/govuk_alerts/get_broadcasts.py b/app/govuk_alerts/rest.py similarity index 75% rename from app/v2/govuk_alerts/get_broadcasts.py rename to app/govuk_alerts/rest.py index acf6da04a..8ec7a35e0 100644 --- a/app/v2/govuk_alerts/get_broadcasts.py +++ b/app/govuk_alerts/rest.py @@ -1,11 +1,19 @@ -from flask import jsonify +from flask import Blueprint, jsonify from app.dao.broadcast_message_dao import dao_get_all_broadcast_messages +from app.errors import register_errors from app.utils import get_dt_string_or_none -from app.v2.govuk_alerts import v2_govuk_alerts_blueprint + +govuk_alerts_blueprint = Blueprint( + "govuk-alerts", + __name__, + url_prefix='/govuk-alerts', +) + +register_errors(govuk_alerts_blueprint) -@v2_govuk_alerts_blueprint.route('') +@govuk_alerts_blueprint.route('') def get_broadcasts(): broadcasts = dao_get_all_broadcast_messages() broadcasts_dict = {"alerts": [{ diff --git a/app/v2/govuk_alerts/__init__.py b/app/v2/govuk_alerts/__init__.py deleted file mode 100644 index 09ec8456d..000000000 --- a/app/v2/govuk_alerts/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from flask import Blueprint - -from app.v2.errors import register_errors - -v2_govuk_alerts_blueprint = Blueprint( - "v2_govuk-alerts_blueprint", - __name__, - url_prefix='/v2/govuk-alerts', -) - -register_errors(v2_govuk_alerts_blueprint) diff --git a/tests/app/authentication/test_authentication.py b/tests/app/authentication/test_authentication.py index 694101913..93fbddaa8 100644 --- a/tests/app/authentication/test_authentication.py +++ b/tests/app/authentication/test_authentication.py @@ -81,7 +81,7 @@ def test_requires_admin_auth_should_allow_valid_token_for_request(client): def test_requires_govuk_alerts_auth_should_allow_valid_token_for_request(client): jwt_client_id = current_app.config['GOVUK_ALERTS_CLIENT_ID'] header = create_internal_authorization_header(jwt_client_id) - response = client.get('/v2/govuk-alerts', headers=[header]) + response = client.get('/govuk-alerts', headers=[header]) assert response.status_code == 200 diff --git a/tests/app/govuk_alerts/__init__.py b/tests/app/govuk_alerts/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/app/v2/govuk_alerts/test_get_broadcasts.py b/tests/app/govuk_alerts/test_get_broadcasts.py similarity index 95% rename from tests/app/v2/govuk_alerts/test_get_broadcasts.py rename to tests/app/govuk_alerts/test_get_broadcasts.py index d0f62efdf..9fb42a105 100644 --- a/tests/app/v2/govuk_alerts/test_get_broadcasts.py +++ b/tests/app/govuk_alerts/test_get_broadcasts.py @@ -25,7 +25,7 @@ def test_get_all_broadcasts_returns_list_of_broadcasts_and_200( jwt_client_id = current_app.config['GOVUK_ALERTS_CLIENT_ID'] header = create_internal_authorization_header(jwt_client_id) - response = client.get('/v2/govuk-alerts', headers=[header]) + response = client.get('/govuk-alerts', headers=[header]) json_response = json.loads(response.get_data(as_text=True))