diff --git a/app/template/rest.py b/app/template/rest.py
index cfa1643e2..17d48d797 100644
--- a/app/template/rest.py
+++ b/app/template/rest.py
@@ -4,7 +4,6 @@ from flask import (
request,
current_app
)
-import bleach
from app.dao.templates_dao import (
dao_update_template,
@@ -41,7 +40,6 @@ def create_template(service_id):
fetched_service = dao_fetch_service_by_id(service_id=service_id)
new_template = template_schema.load(request.get_json()).data
new_template.service = fetched_service
- new_template.content = _strip_html(new_template.content)
over_limit = _content_count_greater_than_limit(new_template.content, new_template.template_type)
if over_limit:
char_count_limit = current_app.config.get('SMS_CHAR_COUNT_LIMIT')
@@ -60,7 +58,6 @@ def update_template(service_id, template_id):
current_data = dict(template_schema.dump(fetched_template).data.items())
updated_template = dict(template_schema.dump(fetched_template).data.items())
updated_template.update(request.get_json())
- updated_template['content'] = _strip_html(updated_template['content'])
# Check if there is a change to make.
if _template_has_not_changed(current_data, updated_template):
return jsonify(data=updated_template), 200
@@ -137,10 +134,6 @@ def get_template_versions(service_id, template_id):
return jsonify(data=data)
-def _strip_html(content):
- return bleach.clean(content, tags=[], strip=True)
-
-
def _template_has_not_changed(current_data, updated_template):
return all(
current_data[key] == updated_template[key]
diff --git a/requirements.txt b/requirements.txt
index 067ddb3dc..262f8162f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,4 @@
apispec==0.14.0
-bleach==1.4.3
Flask==0.10.1
Flask-Script==2.0.5
Flask-Migrate==1.3.1
@@ -24,6 +23,6 @@ gunicorn==19.6.0
# pin to minor version 3.1.x
notifications-python-client>=3.1,<3.2
-git+https://github.com/alphagov/notifications-utils.git@13.1.0#egg=notifications-utils==13.1.0
+git+https://github.com/alphagov/notifications-utils.git@13.2.0#egg=notifications-utils==13.2.0
git+https://github.com/alphagov/boto.git@2.43.0-patch3#egg=boto==2.43.0-patch3
diff --git a/tests/app/conftest.py b/tests/app/conftest.py
index 14db86218..9780ec38d 100644
--- a/tests/app/conftest.py
+++ b/tests/app/conftest.py
@@ -188,6 +188,14 @@ def sample_template_with_placeholders(notify_db, notify_db_session):
return sample_template(notify_db, notify_db_session, content="Hello (( Name))\nYour thing is due soon")
+@pytest.fixture(scope='function')
+def sample_sms_template_with_html(notify_db, notify_db_session):
+ # deliberate space and title case in placeholder
+ return sample_template(notify_db, notify_db_session, content=(
+ "Hello (( Name))\nHere is some HTML & entities"
+ ))
+
+
@pytest.fixture(scope='function')
def sample_email_template(
notify_db,
@@ -224,6 +232,15 @@ def sample_email_template_with_placeholders(notify_db, notify_db_session):
subject_line="((name))")
+@pytest.fixture(scope='function')
+def sample_email_template_with_html(notify_db, notify_db_session):
+ return sample_email_template(
+ notify_db,
+ notify_db_session,
+ content="Hello ((name))\nThis is an email from GOV.UK with some HTML",
+ subject_line="((name)) some HTML")
+
+
@pytest.fixture(scope='function')
def sample_api_key(notify_db,
notify_db_session,
diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py
index 133a3bf94..97071c210 100644
--- a/tests/app/delivery/test_send_to_providers.py
+++ b/tests/app/delivery/test_send_to_providers.py
@@ -50,10 +50,10 @@ def test_should_return_highest_priority_active_provider(notify_db, notify_db_ses
def test_should_send_personalised_template_to_correct_sms_provider_and_persist(
notify_db,
notify_db_session,
- sample_template_with_placeholders,
+ sample_sms_template_with_html,
mocker
):
- db_notification = sample_notification(notify_db, notify_db_session, template=sample_template_with_placeholders,
+ db_notification = sample_notification(notify_db, notify_db_session, template=sample_sms_template_with_html,
to_field="+447234123123", personalisation={"name": "Jo"},
status='created')
@@ -66,7 +66,7 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist(
mmg_client.send_sms.assert_called_once_with(
to=format_phone_number(validate_phone_number("+447234123123")),
- content="Sample service: Hello Jo\nYour thing is due soon",
+ content="Sample service: Hello Jo\nHere is some HTML & entities",
reference=str(db_notification.id),
sender=None
)
@@ -82,12 +82,12 @@ def test_should_send_personalised_template_to_correct_sms_provider_and_persist(
def test_should_send_personalised_template_to_correct_email_provider_and_persist(
notify_db,
notify_db_session,
- sample_email_template_with_placeholders,
+ sample_email_template_with_html,
mocker
):
db_notification = sample_notification(
notify_db=notify_db, notify_db_session=notify_db_session,
- template=sample_email_template_with_placeholders,
+ template=sample_email_template_with_html,
to_field="jo.smith@example.com",
personalisation={'name': 'Jo'}
)
@@ -102,12 +102,13 @@ def test_should_send_personalised_template_to_correct_email_provider_and_persist
app.aws_ses_client.send_email.assert_called_once_with(
'"Sample service" ',
'jo.smith@example.com',
- 'Jo',
- body='Hello Jo\nThis is an email from GOV.\u200bUK',
+ 'Jo some HTML',
+ body='Hello Jo\nThis is an email from GOV.\u200bUK with some HTML',
html_body=ANY,
reply_to_address=None
)
assert 'content'
assert json_resp['data']['service'] == str(sample_service.id)
assert json_resp['data']['id']
assert json_resp['data']['version'] == 1
@@ -153,7 +153,9 @@ def test_update_should_update_a_template(client, sample_user, sample_template):
assert update_response.status_code == 200
update_json_resp = json.loads(update_response.get_data(as_text=True))
- assert update_json_resp['data']['content'] == 'my template has new content alert("foo")'
+ assert update_json_resp['data']['content'] == (
+ 'my template has new content '
+ )
assert update_json_resp['data']['name'] == sample_template.name
assert update_json_resp['data']['template_type'] == sample_template.template_type
assert update_json_resp['data']['version'] == 2