|
33 | 33 | from io import StringIO |
34 | 34 | from unittest import mock |
35 | 35 | import uuid |
| 36 | +from xml.sax.saxutils import unescape |
36 | 37 |
|
37 | 38 | import pytest |
38 | 39 |
|
@@ -77,13 +78,20 @@ def test_get_typed_value(): |
77 | 78 | @pytest.mark.parametrize('data,minified,pretty_printed', [ |
78 | 79 | [{'foo': 'bar'}, '{"foo":"bar"}', '{\n "foo":"bar"\n}'], |
79 | 80 | [{'foo<script>alert("hi")</script>': 'bar'}, |
80 | | - '{"foo<script>alert(\\"hi\\")</script>":"bar"}', |
81 | | - '{\n "foo<script>alert(\\"hi\\")</script>":"bar"\n}'] |
| 81 | + '{"foo<script>alert(\\"hi\\")</script>":"bar"}', |
| 82 | + '{\n "foo<script>alert(\\"hi\\")</script>":"bar"\n}'] |
82 | 83 | ]) |
83 | 84 | def test_to_json(data, minified, pretty_printed): |
84 | | - assert util.to_json(data) == minified |
| 85 | + output = util.to_json(data) |
| 86 | + assert output == minified |
85 | 87 | assert util.to_json(data, pretty=True) == pretty_printed |
86 | 88 |
|
| 89 | + unescaped_output = unescape(output) |
| 90 | + if '<' in output: |
| 91 | + assert '<' in unescaped_output |
| 92 | + if '>' in output: |
| 93 | + assert '>' in unescaped_output |
| 94 | + |
87 | 95 |
|
88 | 96 | def test_yaml_load(config): |
89 | 97 | assert isinstance(config, dict) |
|
0 commit comments