Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions cds/modules/records/serializers/json.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
has_read_record_eos_path_permission,
has_read_record_permission,
)
from ..utils import HTMLTagRemover, parse_video_chapters, remove_html_tags
from ..utils import HTMLTagRemover, parse_video_chapters
from marshmallow_utils.html import sanitize_html, ALLOWED_HTML_ATTRS, ALLOWED_CSS_STYLES

CUSTOM_ALLOWED_ATTRS = {
Expand Down Expand Up @@ -61,9 +61,6 @@ def _sanitize_metadata(self, metadata):
if "title" in metadata and "title" in metadata["title"]:
title = metadata["title"]["title"]
title = self.html_tag_remover.unescape(title)
metadata["title"]["title"] = remove_html_tags(
self.html_tag_remover, title
)

if "description" in metadata:
description = metadata["description"]
Expand All @@ -79,9 +76,6 @@ def _sanitize_metadata(self, metadata):
if "title" in t and "title" in t["title"]:
t_title = t["title"]["title"]
t_title = self.html_tag_remover.unescape(t_title)
t["title"]["title"] = remove_html_tags(
self.html_tag_remover, t_title
)

if "description" in t:
t_desc = t["description"]
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/test_records.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ def test_records_rest(
res = client.get(url2, headers=json_headers)
assert res.status_code == 200
video_dict = json.loads(res.data.decode("utf-8"))
assert video_dict["metadata"]["title"]["title"] == "My english title"
assert video_dict["metadata"]["title"]["title"] == "My <b>english</b> title"
expect_desc = "in tempor reprehenderit enim eiusmod <b><i>html</i></b>"
assert video_dict["metadata"]["description"] == expect_desc

Expand Down
17 changes: 5 additions & 12 deletions tests/unit/test_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,20 +191,13 @@ def test_cds_json_serializer_sanitization(video_record_metadata):
assert 'Safe content' in description
# Keep safe HTML tags like <b>
assert '<b>bold</b>' in description
# Remove everything in title

# Title: only unescape, no HTML tag removal
title = result['metadata']['title']['title']
assert '<script>' not in title
assert '</script>' not in title
assert 'Test' in title and 'Title' in title
assert '<b>' not in title
# --- Translations checks ---
assert '<b>bold</b>' in title

# Translations: descriptions sanitized, titles only unescaped
translations = result['metadata']['translations']
for tr in translations:
# description
assert '<script>' not in tr['description']
# title
assert '<script>' not in tr['title']['title']
assert '<b>' not in tr['title']['title']