import importlib.util import unittest from pathlib import Path MODULE_PATH = Path(__file__).parents[1] / 'src' / 'server_catalog.py' spec = importlib.util.spec_from_file_location('server_catalog', MODULE_PATH) server_catalog = importlib.util.module_from_spec(spec) spec.loader.exec_module(server_catalog) class ServerCatalogTest(unittest.TestCase): def setUp(self): self.catalog = { 'units': [{ 'filename': 'CKMath_G3U1.zip', 'materials': [{'id': 'guide-1', 'internal_path': 'unit/guide.pdf', 'filename': 'guide.pdf'}], }] } def test_known_material_id_resolves_to_its_declared_zip_member(self): index = server_catalog.material_index(self.catalog) self.assertEqual(server_catalog.lookup_material(index, 'guide-1'), ('CKMath_G3U1.zip', 'unit/guide.pdf')) def test_unknown_or_path_like_id_is_not_resolved(self): index = server_catalog.material_index(self.catalog) self.assertIsNone(server_catalog.lookup_material(index, '../../etc/passwd')) self.assertIsNone(server_catalog.lookup_material(index, 'not-in-the-catalog')) if __name__ == '__main__': unittest.main()