|
|
|
@ -131,7 +131,7 @@ class TestAdobe(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_hash_node(self):
|
|
|
|
|
'''Check if the XML hash (needed for the signature) is correct'''
|
|
|
|
|
'''Check if XML hashing (needed for the signature) works'''
|
|
|
|
|
|
|
|
|
|
# This XML is an anonymized (all IDs replaced with random UUIDs) ACSM file.
|
|
|
|
|
|
|
|
|
@ -173,7 +173,7 @@ class TestAdobe(unittest.TestCase):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_hash_node_returnbugfix(self):
|
|
|
|
|
'''Check if the XML hash is correct when returning a book ...'''
|
|
|
|
|
'''Check if XML hashing works for book returns ...'''
|
|
|
|
|
|
|
|
|
|
# I don't think there's ever a case where the hashing algorithm is different,
|
|
|
|
|
# but I needed this test during debugging and thought, hey, why not leave it in.
|
|
|
|
@ -198,9 +198,39 @@ class TestAdobe(unittest.TestCase):
|
|
|
|
|
mock_xml_obj = etree.fromstring(mock_xml_str)
|
|
|
|
|
sha_hash = libadobe.hash_node(mock_xml_obj).hexdigest().lower()
|
|
|
|
|
|
|
|
|
|
self.assertEqual(sha_hash, "8b0a24ba37c4333d93650c6ce52f8ee779f21533", "Invalid SHA hash for node signing")
|
|
|
|
|
self.assertEqual(sha_hash, "8b0a24ba37c4333d93650c6ce52f8ee779f21533", "Invalid SHA hash for node signing (return)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_hash_node_ultralong(self):
|
|
|
|
|
'''Check if XML hashing works with long values'''
|
|
|
|
|
|
|
|
|
|
# If an XML text element is longer than 32k bytes, the hashing works differently.
|
|
|
|
|
# Make sure that that works, even though it's not going to show up in practice anywhere ...
|
|
|
|
|
|
|
|
|
|
mock_xml_str = """
|
|
|
|
|
<adept:notification xmlns:adept="http://ns.adobe.com/adept">
|
|
|
|
|
<adept:user>urn:uuid:6e5393e0-ff13-4ae8-8f6c-6654182ac7d5</adept:user>
|
|
|
|
|
<adept:device>urn:uuid:51abfbaf-f0e8-474d-b031-626c5224f90f</adept:device>
|
|
|
|
|
<adept:testCodeForACSMInput>{}</adept:testCodeForACSMInput>
|
|
|
|
|
<adept:nonce>eVr2pi26AAAAAAAA</adept:nonce>
|
|
|
|
|
<adept:expiration>2022-08-03T09:16:22Z</adept:expiration>
|
|
|
|
|
<body xmlns="http://ns.adobe.com/adept">
|
|
|
|
|
<fulfillment>6ccfbc7a-349b-40ad-82d8-d7a4c717ca13-00000271</fulfillment>
|
|
|
|
|
<transaction>237493726-1749302749327354-Wed Aug 03 09:16:22 UTC 2022</transaction>
|
|
|
|
|
<user>urn:uuid:6e5393e0-ff13-4ae8-8f6c-6654182ac7d5</user>
|
|
|
|
|
<fulfilled>true</fulfilled>
|
|
|
|
|
<returned>true</returned>
|
|
|
|
|
<hmac>CB3Ql1FAJD957t5n749q5ZO8IzU=</hmac>
|
|
|
|
|
</body>
|
|
|
|
|
</adept:notification>
|
|
|
|
|
""".format("A"*70000)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mock_xml_obj = etree.fromstring(mock_xml_str)
|
|
|
|
|
sha_hash = libadobe.hash_node(mock_xml_obj).hexdigest().lower()
|
|
|
|
|
|
|
|
|
|
self.assertEqual(sha_hash, "7f62c1c1db2e1c965fd8403a4e768735a5848689", "Invalid SHA hash for node signing (ultralong)")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_sign_node_old(self):
|
|
|
|
|