summaryrefslogtreecommitdiffstats
path: root/pyload/lib/simplejson/tests/test_encode_for_html.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/lib/simplejson/tests/test_encode_for_html.py')
-rw-r--r--pyload/lib/simplejson/tests/test_encode_for_html.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/pyload/lib/simplejson/tests/test_encode_for_html.py b/pyload/lib/simplejson/tests/test_encode_for_html.py
new file mode 100644
index 000000000..f99525486
--- /dev/null
+++ b/pyload/lib/simplejson/tests/test_encode_for_html.py
@@ -0,0 +1,30 @@
+import unittest
+
+import simplejson as json
+
+class TestEncodeForHTML(unittest.TestCase):
+
+ def setUp(self):
+ self.decoder = json.JSONDecoder()
+ self.encoder = json.JSONEncoderForHTML()
+
+ def test_basic_encode(self):
+ self.assertEqual(r'"\u0026"', self.encoder.encode('&'))
+ self.assertEqual(r'"\u003c"', self.encoder.encode('<'))
+ self.assertEqual(r'"\u003e"', self.encoder.encode('>'))
+
+ def test_basic_roundtrip(self):
+ for char in '&<>':
+ self.assertEqual(
+ char, self.decoder.decode(
+ self.encoder.encode(char)))
+
+ def test_prevent_script_breakout(self):
+ bad_string = '</script><script>alert("gotcha")</script>'
+ self.assertEqual(
+ r'"\u003c/script\u003e\u003cscript\u003e'
+ r'alert(\"gotcha\")\u003c/script\u003e"',
+ self.encoder.encode(bad_string))
+ self.assertEqual(
+ bad_string, self.decoder.decode(
+ self.encoder.encode(bad_string)))