mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-27 13:51:12 -05:00
Remove domains.yml dependence from agreement pages
This will allow us to remove the `domains.yml` file, by using information about organisations that is now stored in the database instead.
This commit is contained in:
@@ -1,21 +1,17 @@
|
||||
from flask import abort, render_template, request, send_file, url_for
|
||||
from flask_login import login_required
|
||||
from flask_login import current_user, login_required
|
||||
|
||||
from app.main import main
|
||||
from app.main.views.sub_navigation_dictionaries import features_nav
|
||||
from app.s3_client.s3_mou_client import get_mou
|
||||
from app.utils import AgreementInfo
|
||||
|
||||
|
||||
@main.route('/agreement')
|
||||
@login_required
|
||||
def agreement():
|
||||
|
||||
agreement_info = AgreementInfo.from_current_user()
|
||||
|
||||
return render_template(
|
||||
'views/{}.html'.format(agreement_info.as_jinja_template),
|
||||
owner=agreement_info.owner,
|
||||
'views/{}.html'.format(current_user.default_organisation.as_jinja_template),
|
||||
owner=current_user.default_organisation.name,
|
||||
navigation_links=features_nav(),
|
||||
)
|
||||
|
||||
@@ -24,7 +20,7 @@ def agreement():
|
||||
@login_required
|
||||
def download_agreement():
|
||||
return send_file(**get_mou(
|
||||
AgreementInfo.from_current_user().crown_status_or_404
|
||||
current_user.default_organisation.crown_status_or_404
|
||||
))
|
||||
|
||||
|
||||
@@ -40,10 +36,8 @@ def public_agreement(variant):
|
||||
organisation_is_crown=(variant == 'crown')
|
||||
))
|
||||
|
||||
agreement_info = AgreementInfo.from_current_user()
|
||||
|
||||
return render_template(
|
||||
'views/agreement-public.html',
|
||||
owner=agreement_info.owner,
|
||||
owner=current_user.default_organisation.name,
|
||||
download_link=url_for('.public_download_agreement', variant=variant),
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ from io import BytesIO
|
||||
import pytest
|
||||
from flask import url_for
|
||||
|
||||
from tests.conftest import active_user_with_permissions
|
||||
from tests.conftest import mock_get_organisation_by_domain
|
||||
|
||||
|
||||
class _MockS3Object():
|
||||
@@ -16,22 +16,22 @@ class _MockS3Object():
|
||||
return {'Body': BytesIO(self.data)}
|
||||
|
||||
|
||||
@pytest.mark.parametrize('email_address, expected_links', [
|
||||
@pytest.mark.parametrize('agreement_signed, crown, expected_links', [
|
||||
(
|
||||
'test@cabinet-office.gov.uk',
|
||||
True, True,
|
||||
[
|
||||
partial(url_for, 'main.download_agreement'),
|
||||
]
|
||||
),
|
||||
(
|
||||
'test@aylesburytowncouncil.gov.uk',
|
||||
False, False,
|
||||
[
|
||||
partial(url_for, 'main.download_agreement'),
|
||||
lambda: 'mailto:notify-support@digital.cabinet-office.gov.uk',
|
||||
]
|
||||
),
|
||||
(
|
||||
'test@unknown.gov.uk',
|
||||
None, None,
|
||||
[
|
||||
partial(url_for, 'main.public_download_agreement', variant='crown'),
|
||||
partial(url_for, 'main.public_download_agreement', variant='non-crown'),
|
||||
@@ -44,12 +44,15 @@ def test_show_agreement_page(
|
||||
client_request,
|
||||
mocker,
|
||||
fake_uuid,
|
||||
email_address,
|
||||
agreement_signed,
|
||||
crown,
|
||||
expected_links,
|
||||
):
|
||||
user = active_user_with_permissions(fake_uuid)
|
||||
user.email_address = email_address
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
mock_get_organisation_by_domain(
|
||||
mocker,
|
||||
crown=crown,
|
||||
agreement_signed=agreement_signed,
|
||||
)
|
||||
page = client_request.get('main.agreement')
|
||||
links = page.select('main .column-two-thirds a')
|
||||
assert len(links) == len(expected_links)
|
||||
@@ -57,14 +60,14 @@ def test_show_agreement_page(
|
||||
assert link['href'] == expected_links[index]()
|
||||
|
||||
|
||||
@pytest.mark.parametrize('email_address, expected_file_fetched, expected_file_served', [
|
||||
@pytest.mark.parametrize('crown, expected_file_fetched, expected_file_served', [
|
||||
(
|
||||
'test@cabinet-office.gov.uk',
|
||||
True,
|
||||
'crown.pdf',
|
||||
'GOV.UK Notify data sharing and financial agreement.pdf',
|
||||
),
|
||||
(
|
||||
'test@aylesburytowncouncil.gov.uk',
|
||||
False,
|
||||
'non-crown.pdf',
|
||||
'GOV.UK Notify data sharing and financial agreement (non-crown).pdf',
|
||||
),
|
||||
@@ -73,7 +76,7 @@ def test_downloading_agreement(
|
||||
logged_in_client,
|
||||
mocker,
|
||||
fake_uuid,
|
||||
email_address,
|
||||
crown,
|
||||
expected_file_fetched,
|
||||
expected_file_served,
|
||||
):
|
||||
@@ -81,9 +84,10 @@ def test_downloading_agreement(
|
||||
'app.s3_client.s3_mou_client.get_s3_object',
|
||||
return_value=_MockS3Object(b'foo')
|
||||
)
|
||||
user = active_user_with_permissions(fake_uuid)
|
||||
user.email_address = email_address
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
mock_get_organisation_by_domain(
|
||||
mocker,
|
||||
crown=crown,
|
||||
)
|
||||
response = logged_in_client.get(url_for('main.download_agreement'))
|
||||
assert response.status_code == 200
|
||||
assert response.get_data() == b'foo'
|
||||
@@ -103,9 +107,10 @@ def test_agreement_cant_be_downloaded_unknown_crown_status(
|
||||
'app.s3_client.s3_mou_client.get_s3_object',
|
||||
return_value=_MockS3Object()
|
||||
)
|
||||
user = active_user_with_permissions(fake_uuid)
|
||||
user.email_address = 'test@unknown.gov.uk'
|
||||
mocker.patch('app.user_api_client.get_user', return_value=user)
|
||||
mock_get_organisation_by_domain(
|
||||
mocker,
|
||||
crown=None,
|
||||
)
|
||||
response = logged_in_client.get(url_for('main.download_agreement'))
|
||||
assert response.status_code == 404
|
||||
assert mock_get_s3_object.call_args_list == []
|
||||
|
||||
Reference in New Issue
Block a user