1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
"""
<Program Name>
test_formats.py
<Author>
Vladimir Diaz <vladimir.v.diaz@gmail.com>
<Started>
January 2017 (modified from TUF's original formats.py)
<Copyright>
See LICENSE for licensing information.
<Purpose>
Unit test for 'formats.py'
"""
import unittest
import securesystemslib.formats
class TestFormats(unittest.TestCase):
def test_encode_canonical(self):
# Test conditions for valid arguments.
encode = securesystemslib.formats.encode_canonical
result = []
output = result.append
self.assertEqual('""', encode(""))
self.assertEqual("[1,2,3]", encode([1, 2, 3]))
self.assertEqual("[1,2,3]", encode([1, 2, 3]))
self.assertEqual("[]", encode([]))
self.assertEqual("{}", encode({}))
self.assertEqual('{"A":[99]}', encode({"A": [99]}))
self.assertEqual('{"A":true}', encode({"A": True}))
self.assertEqual('{"B":false}', encode({"B": False}))
self.assertEqual('{"x":3,"y":2}', encode({"x": 3, "y": 2}))
self.assertEqual('{"x":3,"y":null}', encode({"x": 3, "y": None}))
# Test condition with escaping " and \
self.assertEqual('"\\""', encode('"'))
self.assertEqual('"\\\\"', encode("\\"))
self.assertEqual('"\\\\\\""', encode('\\"'))
# Condition where 'encode()' sends the result to the callable
# 'output'.
self.assertEqual(None, encode([1, 2, 3], output))
self.assertEqual("[1,2,3]", "".join(result))
# Test conditions for invalid arguments.
self.assertRaises(
securesystemslib.exceptions.FormatError,
encode,
securesystemslib.exceptions.FormatError,
)
self.assertRaises(securesystemslib.exceptions.FormatError, encode, 8.0)
self.assertRaises(securesystemslib.exceptions.FormatError, encode, {"x": 8.0})
self.assertRaises(securesystemslib.exceptions.FormatError, encode, 8.0, output)
self.assertRaises(
securesystemslib.exceptions.FormatError,
encode,
{"x": securesystemslib.exceptions.FormatError},
)
# Run unit test.
if __name__ == "__main__":
unittest.main()
|