Merge pull request #773 from GSA/notify-762

Notify 762 - Redirect notify.gov to beta.notify.gov
This commit is contained in:
Carlo Costino
2023-09-18 17:26:20 -04:00
committed by GitHub
3 changed files with 58 additions and 0 deletions

View File

@@ -2,6 +2,7 @@ import os
import pathlib
from functools import partial
from time import monotonic
from urllib.parse import urlparse, urlunparse
import jinja2
from flask import (
@@ -250,6 +251,7 @@ def create_app(application):
def init_app(application):
application.before_request(redirect_notify_to_beta)
application.before_request(load_service_before_request)
application.before_request(load_organization_before_request)
application.before_request(request_helper.check_proxy_header_before_request)
@@ -328,6 +330,23 @@ def make_session_permanent():
session.permanent = True
def create_beta_url(url):
url_created = urlparse(url)
url_list = list(url_created)
url_list[1] = "beta.notify.gov"
url_for_redirect = urlunparse(url_list)
return url_for_redirect
def redirect_notify_to_beta():
if (
current_app.config["NOTIFY_ENVIRONMENT"] == "production"
and "beta.notify.gov" not in request.url
):
url_to_beta = create_beta_url(request.url)
return redirect(url_to_beta, 302)
def load_service_before_request():
if "/static/" in request.url:
request_ctx.service = None

View File

@@ -0,0 +1,38 @@
from flask import current_app
from app import create_beta_url
def test_create_beta_url():
url_for_redirect = create_beta_url("https://notify.gov/using-notify/get-started")
assert url_for_redirect == "https://beta.notify.gov/using-notify/get-started"
def test_no_redirect_notify_to_beta_non_production(monkeypatch, client_request):
monkeypatch.setitem(current_app.config, "NOTIFY_ENVIRONMENT", "development")
assert current_app.config["NOTIFY_ENVIRONMENT"] == "development"
client_request.get_response_from_url(
"https://notify.gov/using-notify/get-started",
_expected_status=200
)
def test_redirect_notify_to_beta(monkeypatch, client_request):
monkeypatch.setitem(current_app.config, "NOTIFY_ENVIRONMENT", "production")
assert current_app.config["NOTIFY_ENVIRONMENT"] == "production"
client_request.get_response_from_url(
"https://notify.gov/using-notify/get-started",
_expected_status=302
)
def test_no_redirect_beta_notify_to_beta(monkeypatch, client_request):
monkeypatch.setitem(current_app.config, "NOTIFY_ENVIRONMENT", "production")
assert current_app.config["NOTIFY_ENVIRONMENT"] == "production"
client_request.get_response_from_url(
"https://beta.notify.gov/using-notify/get-started",
_expected_status=200
)

View File

@@ -2392,6 +2392,7 @@ def _client(notify_admin):
Do not use this fixture directly use `client_request` instead
"""
with notify_admin.test_request_context(), notify_admin.test_client() as client:
client.allow_subdomain_redirects = True
yield client