mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-24 00:06:16 -04:00
Merge pull request #2497 from alphagov/precompiled_for_everyone
Don't require precompiled_letter service permission
This commit is contained in:
@@ -292,7 +292,6 @@ SERVICE_PERMISSION_TYPES = [
|
|||||||
SCHEDULE_NOTIFICATIONS,
|
SCHEDULE_NOTIFICATIONS,
|
||||||
EMAIL_AUTH,
|
EMAIL_AUTH,
|
||||||
LETTERS_AS_PDF,
|
LETTERS_AS_PDF,
|
||||||
PRECOMPILED_LETTER,
|
|
||||||
UPLOAD_DOCUMENT,
|
UPLOAD_DOCUMENT,
|
||||||
EDIT_FOLDER_PERMISSIONS,
|
EDIT_FOLDER_PERMISSIONS,
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from app.models import (
|
|||||||
SMS_TYPE,
|
SMS_TYPE,
|
||||||
EMAIL_TYPE,
|
EMAIL_TYPE,
|
||||||
LETTER_TYPE,
|
LETTER_TYPE,
|
||||||
PRECOMPILED_LETTER,
|
|
||||||
UPLOAD_DOCUMENT,
|
UPLOAD_DOCUMENT,
|
||||||
PRIORITY,
|
PRIORITY,
|
||||||
KEY_TYPE_TEST,
|
KEY_TYPE_TEST,
|
||||||
@@ -71,9 +70,8 @@ def post_precompiled_letter_notification():
|
|||||||
|
|
||||||
form = validate(request.get_json(), post_precompiled_letter_request)
|
form = validate(request.get_json(), post_precompiled_letter_request)
|
||||||
|
|
||||||
# Check both permission to send letters and permission to send pre-compiled PDFs
|
# Check permission to send letters
|
||||||
check_service_has_permission(LETTER_TYPE, authenticated_service.permissions)
|
check_service_has_permission(LETTER_TYPE, authenticated_service.permissions)
|
||||||
check_service_has_permission(PRECOMPILED_LETTER, authenticated_service.permissions)
|
|
||||||
|
|
||||||
check_rate_limiting(authenticated_service, api_user)
|
check_rate_limiting(authenticated_service, api_user)
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ from app.models import (
|
|||||||
JOB_STATUS_IN_PROGRESS,
|
JOB_STATUS_IN_PROGRESS,
|
||||||
LETTER_TYPE,
|
LETTER_TYPE,
|
||||||
SMS_TYPE,
|
SMS_TYPE,
|
||||||
PRECOMPILED_LETTER
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from tests.app import load_example_csv
|
from tests.app import load_example_csv
|
||||||
@@ -1015,7 +1014,7 @@ def test_save_letter_saves_letter_to_database(mocker, notify_db_session):
|
|||||||
|
|
||||||
@pytest.mark.parametrize('postage', ['first', 'second'])
|
@pytest.mark.parametrize('postage', ['first', 'second'])
|
||||||
def test_save_letter_saves_letter_to_database_with_correct_postage(mocker, notify_db_session, postage):
|
def test_save_letter_saves_letter_to_database_with_correct_postage(mocker, notify_db_session, postage):
|
||||||
service = create_service(service_permissions=[LETTER_TYPE, PRECOMPILED_LETTER])
|
service = create_service(service_permissions=[LETTER_TYPE])
|
||||||
template = sample_letter_template(service, postage=postage)
|
template = sample_letter_template(service, postage=postage)
|
||||||
letter_job = sample_letter_job(template)
|
letter_job = sample_letter_job(template)
|
||||||
|
|
||||||
|
|||||||
@@ -382,7 +382,7 @@ def test_post_letter_notification_is_delivered_and_has_pdf_uploaded_to_test_lett
|
|||||||
notify_user,
|
notify_user,
|
||||||
mocker
|
mocker
|
||||||
):
|
):
|
||||||
sample_letter_service = create_service(service_permissions=['letter', 'precompiled_letter'])
|
sample_letter_service = create_service(service_permissions=['letter'])
|
||||||
mocker.patch('app.celery.letters_pdf_tasks.notify_celery.send_task')
|
mocker.patch('app.celery.letters_pdf_tasks.notify_celery.send_task')
|
||||||
s3mock = mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf', return_value='test.pdf')
|
s3mock = mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf', return_value='test.pdf')
|
||||||
data = {
|
data = {
|
||||||
@@ -421,25 +421,8 @@ def test_post_letter_notification_persists_notification_reply_to_text(
|
|||||||
assert notifications[0].reply_to_text == service_address
|
assert notifications[0].reply_to_text == service_address
|
||||||
|
|
||||||
|
|
||||||
def test_post_precompiled_letter_requires_permission(client, sample_service, notify_user, mocker):
|
|
||||||
mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf')
|
|
||||||
data = {
|
|
||||||
"reference": "letter-reference",
|
|
||||||
"content": "bGV0dGVyLWNvbnRlbnQ="
|
|
||||||
}
|
|
||||||
auth_header = create_authorization_header(service_id=sample_service.id)
|
|
||||||
response = client.post(
|
|
||||||
path="v2/notifications/letter",
|
|
||||||
data=json.dumps(data),
|
|
||||||
headers=[('Content-Type', 'application/json'), auth_header])
|
|
||||||
|
|
||||||
assert response.status_code == 400, response.get_data(as_text=True)
|
|
||||||
resp_json = json.loads(response.get_data(as_text=True))
|
|
||||||
assert resp_json['errors'][0]['message'] == 'Service is not allowed to send precompiled letters'
|
|
||||||
|
|
||||||
|
|
||||||
def test_post_precompiled_letter_with_invalid_base64(client, notify_user, mocker):
|
def test_post_precompiled_letter_with_invalid_base64(client, notify_user, mocker):
|
||||||
sample_service = create_service(service_permissions=['letter', 'precompiled_letter'])
|
sample_service = create_service(service_permissions=['letter'])
|
||||||
mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf')
|
mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf')
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
@@ -467,7 +450,7 @@ def test_post_precompiled_letter_with_invalid_base64(client, notify_user, mocker
|
|||||||
def test_post_precompiled_letter_notification_returns_201(
|
def test_post_precompiled_letter_notification_returns_201(
|
||||||
client, notify_user, mocker, notification_postage, expected_postage
|
client, notify_user, mocker, notification_postage, expected_postage
|
||||||
):
|
):
|
||||||
sample_service = create_service(service_permissions=['letter', 'precompiled_letter'])
|
sample_service = create_service(service_permissions=['letter'])
|
||||||
s3mock = mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf')
|
s3mock = mocker.patch('app.v2.notifications.post_notifications.upload_letter_pdf')
|
||||||
mocker.patch('app.celery.letters_pdf_tasks.notify_celery.send_task')
|
mocker.patch('app.celery.letters_pdf_tasks.notify_celery.send_task')
|
||||||
data = {
|
data = {
|
||||||
@@ -500,7 +483,7 @@ def test_post_precompiled_letter_notification_returns_201(
|
|||||||
|
|
||||||
|
|
||||||
def test_post_letter_notification_throws_error_for_invalid_postage(client, notify_user, mocker):
|
def test_post_letter_notification_throws_error_for_invalid_postage(client, notify_user, mocker):
|
||||||
sample_service = create_service(service_permissions=['letter', 'precompiled_letter'])
|
sample_service = create_service(service_permissions=['letter'])
|
||||||
data = {
|
data = {
|
||||||
"reference": "letter-reference",
|
"reference": "letter-reference",
|
||||||
"content": "bGV0dGVyLWNvbnRlbnQ=",
|
"content": "bGV0dGVyLWNvbnRlbnQ=",
|
||||||
|
|||||||
Reference in New Issue
Block a user