Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
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