diff options
Diffstat (limited to 'wrappers/python/test_discovery.py')
| -rw-r--r-- | wrappers/python/test_discovery.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/wrappers/python/test_discovery.py b/wrappers/python/test_discovery.py new file mode 100644 index 0000000..369fdcb --- /dev/null +++ b/wrappers/python/test_discovery.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 + +import unittest +import discovery + +test_data_dir = "../../test_data" + + +def read_bytes(path: str) -> bytes: + with open(path, "rb") as f: + return f.read() + + +class VerifyTests(unittest.TestCase): + @classmethod + def setUpClass(cls) -> None: + with open(f"{test_data_dir}/dummy/public.key") as f: + discovery._insecure_testing_set_extra_key(f.readlines()[-1][:-1]) + + def testValid(self): + discovery.verify( + read_bytes(f"{test_data_dir}/dummy/server_list.json.minisig"), + read_bytes(f"{test_data_dir}/dummy/server_list.json"), + "server_list.json", + 0 + ) + + def testValidMemoryView(self): + discovery.verify( + memoryview(b"abc" + read_bytes(f"{test_data_dir}/dummy/server_list.json.minisig") + b"abc")[3:-3], + read_bytes(f"{test_data_dir}/dummy/server_list.json"), + "server_list.json", + 0 + ) + + def testInvalidSignature(self): + with self.assertRaises(discovery.VerifyError) as ctx: + discovery.verify( + read_bytes(f"{test_data_dir}/dummy/random.txt"), + read_bytes(f"{test_data_dir}/dummy/server_list.json"), + "server_list.json", + 0 + ) + self.assertEqual(ctx.exception.code, discovery.VerifyErrorCode.ErrInvalidSignature) + + def testWrongKey(self): + with self.assertRaises(discovery.VerifyError) as ctx: + discovery.verify( + read_bytes(f"{test_data_dir}/dummy/server_list.json.wrong_key.minisig"), + read_bytes(f"{test_data_dir}/dummy/server_list.json"), + "server_list.json", + 0 + ) + self.assertEqual(ctx.exception.code, discovery.VerifyErrorCode.ErrInvalidSignatureUnknownKey) + + def testOldSignature(self): + with self.assertRaises(discovery.VerifyError) as ctx: + discovery.verify( + read_bytes(f"{test_data_dir}/dummy/server_list.json.minisig"), + read_bytes(f"{test_data_dir}/dummy/server_list.json"), + "server_list.json", + 1 << 31 + ) + self.assertEqual(ctx.exception.code, discovery.VerifyErrorCode.ErrTooOld) + + def TestUnknownExpectedFile(self): + with self.assertRaises(discovery.VerifyError) as ctx: + discovery.verify( + read_bytes(f"{test_data_dir}/dummy/other_list.json.minisig"), + read_bytes(f"{test_data_dir}/dummy/other_list.json"), + "other_list.json", + 0 + ) + self.assertEqual(ctx.exception.code, discovery.VerifyErrorCode.ErrUnknownExpectedFileName) + + +if __name__ == "__main__": + unittest.main() |
