def test_download_schema_should_save_to_file(self, get_requests, mock_open): logger = mock.Mock() schema = "https://dummy.url.to.xsd" get_requests.return_value.raise_for_status.return_value = mock.ANY download_schema(dirname=self.textdir, logger=logger, schema=schema, verify=True) get_requests.assert_called_once_with(schema, stream=True, verify=True) mock_open.assert_called_once_with( os.path.join(self.textdir, "dummy.url.to.xsd"), 'wb') self.assertEqual(logger.info.call_count, 2)
def test_when_exception_raised_should_log_and_raise( self, get_requests, os_remove): logger = mock.Mock() schema = "https://dummy.url.to.xsd" get_requests.side_effect = Exception with self.assertRaises(Exception): download_schema(dirname=self.textdir, logger=logger, schema=schema, verify=True) get_requests.assert_called_once_with(schema, stream=True, verify=True) self.assertEqual(logger.info.call_count, 2) self.assertEqual(logger.exception.call_count, 1) self.assertEqual(logger.debug.call_count, 1)
def download_imported_https_schemas(schema, dst): from ESSArch_Core.ip.utils import download_schema for url in schema.xpath('//*[local-name()="import"]/@schemaLocation'): protocol = urlparse(url) if protocol == 'http': continue new_path = download_schema(dst, logger, url) new_path = pathlib.Path(new_path) el = url.getparent() el.attrib['schemaLocation'] = new_path.as_uri() return schema