Merge pull request #3236 from alphagov/ensure-correct-encoding-of-broadcast-events

Normalise content for non-templated broadcast events
This commit is contained in:
Richard Baker
2021-05-10 16:45:40 +01:00
committed by GitHub
2 changed files with 14 additions and 7 deletions

View File

@@ -111,13 +111,12 @@ def create_broadcast_message(service_id):
template = dao_get_template_by_id_and_service_id(
template_id, data['service_id']
)
content = template._as_utils_template_with_personalisation(
content = str(template._as_utils_template_with_personalisation(
personalisation
).content_with_placeholders_filled_in
))
reference = None
else:
template, content, reference = None, data['content'], data['reference']
temporary_template = BroadcastMessageTemplate.from_content(content)
temporary_template = BroadcastMessageTemplate.from_content(data['content'])
if temporary_template.content_too_long:
raise InvalidRequest(
(
@@ -130,6 +129,9 @@ def create_broadcast_message(service_id):
),
status_code=400,
)
template = None
content = str(temporary_template)
reference = data['reference']
broadcast_message = BroadcastMessage(
service_id=service.id,

View File

@@ -130,7 +130,11 @@ def test_get_broadcast_messages_for_service(admin_request, sample_broadcast_serv
@pytest.mark.parametrize('training_mode_service', [True, False])
def test_create_broadcast_message(admin_request, sample_broadcast_service, training_mode_service):
sample_broadcast_service.restricted = training_mode_service
t = create_template(sample_broadcast_service, BROADCAST_TYPE)
t = create_template(
sample_broadcast_service,
BROADCAST_TYPE,
content='Some content\r\n€ŷŵ~\r\n‘’“”—–-',
)
response = admin_request.post(
'broadcast_message.create_broadcast_message',
@@ -149,6 +153,7 @@ def test_create_broadcast_message(admin_request, sample_broadcast_service, train
assert response['created_by_id'] == str(t.created_by_id)
assert response['personalisation'] == {}
assert response['areas'] == []
assert response['content'] == 'Some content\n€ŷŵ~\n\'\'""---'
broadcast_message = dao_get_broadcast_message_by_id_and_service_id(response["id"], sample_broadcast_service.id)
assert broadcast_message.stubbed == training_mode_service
@@ -231,7 +236,7 @@ def test_create_broadcast_message_can_be_created_from_content(admin_request, sam
response = admin_request.post(
'broadcast_message.create_broadcast_message',
_data={
'content': 'Some tailor made broadcast content',
'content': 'Some content\r\n€ŷŵ~\r\n‘’“”—–-',
'reference': 'abc123',
'service_id': str(sample_broadcast_service.id),
'created_by': str(sample_broadcast_service.created_by_id),
@@ -239,7 +244,7 @@ def test_create_broadcast_message_can_be_created_from_content(admin_request, sam
service_id=sample_broadcast_service.id,
_expected_status=201
)
assert response['content'] == 'Some tailor made broadcast content'
assert response['content'] == 'Some content\n€ŷŵ~\n\'\'""---'
assert response['reference'] == 'abc123'
assert response['template_id'] is None