We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
There are a number of tests that fail and need to be refactored. Related to #97
Once fixed, remove continue-on-error: true from the Test step in the github workflow
continue-on-error: true
(base) ~/githubprojects/MAAP-Project/maap-py git:[issues/95] poetry run pytest test/ ======================================================================================== test session starts ======================================================================================== platform darwin -- Python 3.12.2, pytest-8.2.2, pluggy-1.5.0 rootdir: /Users/greguska/githubprojects/MAAP-Project/maap-py configfile: pyproject.toml plugins: cov-5.0.0 collected 55 items test/test_AWS.py .... [ 7%] test/test_CMR.py FFFFFFFFFFF [ 27%] test/test_DPS.py ...........F. [ 50%] test/test_MAAP.py FFFF. [ 60%] test/test_Result.py ............. [ 83%] test/test_config_reader.py ..FFFFFFF [100%] ============================================================================================= FAILURES ============================================================================================== ________________________________________________________________________________ TestCMR.test_direct_granuleDownload ________________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_direct_granuleDownload> def test_direct_granuleDownload(self): > results = self.maap.downloadGranule( online_access_url='https://datapool.asf.alaska.edu/GRD_HD/SA/S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip', destination_path='./tmp' ) test/test_CMR.py:50: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:98: in downloadGranule return proxy._getHttpData(online_access_url, overwrite, final_destination) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = {}, url = 'https://datapool.asf.alaska.edu/GRD_HD/SA/S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip', overwrite = False dest = './tmp/S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip' def _getHttpData(self, url, overwrite, dest): if overwrite or not os.path.exists(dest): r = requests.get(url, stream=True) # Try with a federated token if unauthorized if r.status_code == 401: if self._dps.running_in_dps: dps_token_response = requests.get( url=self._dps.dps_token_endpoint, headers={ "dps-machine-token": self._dps.dps_machine_token, "dps-job-id": self._dps.job_id, "Accept": "application/json", }, ) if dps_token_response: # Running inside a DPS job, so call DAAC directly dps_token_info = json.loads(dps_token_response.text) r = requests.get( url=r.url, headers={ "Authorization": "Bearer {},Basic {}".format( dps_token_info["user_token"], dps_token_info["app_token"], ), "Connection": "close", }, stream=True, ) else: # Running in ADE, so call MAAP API r = requests.get( url=os.path.join( self._cmrFileUrl, urllib.parse.quote(urllib.parse.quote(url, safe="")), endpoints.CMR_ALGORITHM_DATA, ), headers=self._apiHeader, stream=True, ) r.raise_for_status() r.raw.decode_content = True > with open(dest, "wb") as f: E FileNotFoundError: [Errno 2] No such file or directory: './tmp/S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip' maap/Result.py:132: FileNotFoundError ________________________________________________________________________________________ TestCMR.test_getUrl ________________________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_getUrl> def test_getUrl(self): > results = self.maap.searchGranule(page_num="1", concept_id="C1214470488-ASF", sort_key="-start_date", limit=1) test/test_CMR.py:87: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>VYS...stId><HostId>V335NTUUcB839Chra5bK0DCyJlPRxC++rm4dIZwKr1+ZMQwNAgHaFI4HFiVdVEc1SO5EySMl+F0Z4MN33mR/Vw==</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082ee80> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError ___________________________________________________________________________________ TestCMR.test_granuleDownload ____________________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_granuleDownload> def test_granuleDownload(self): > results = self.maap.searchGranule( granule_ur=self._test_ur) test/test_CMR.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>VYS...stId><HostId>Y7X4tybk2DynhO8qlU9zEvaJAkbW2V7uMROOrbRrnItvdSdVpXAAROqNCDNG4UGae6aM35Ab9wR3oG+dDqpGNg==</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082f380> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError _____________________________________________________________________________ TestCMR.test_granuleDownloadExternalDAAC ______________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_granuleDownloadExternalDAAC> def test_granuleDownloadExternalDAAC(self): # results = self.maap.searchGranule( # collection_concept_id='C1200231010-NASA_MAAP') results = self.maap.searchGranule( cmr_host='cmr.earthdata.nasa.gov', collection_concept_id='C2067521974-ORNL_CLOUD', granule_ur='GEDI_L3_Land_Surface_Metrics.GEDI03_elev_lowestmode_stddev_2019108_2020106_001_08.tif') > download = results[0].getData() E IndexError: list index out of range test/test_CMR.py:46: IndexError ___________________________________________________________________________________ TestCMR.test_searchCollection ___________________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchCollection> def test_searchCollection(self): > results = self.maap.searchCollection( instrument=self._test_instrument_name_uavsar) test/test_CMR.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:130: in searchCollection results = self._CMR.get_search_results(url=self.config.search_collection_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>S72...stId><HostId>e725uNtCcMbqIXYp/t42PMaFYdFgfV+I8Ti5Kc84mI0Ts8otcOX/IJdTBuhIVHaa31S3ja4CLPG8yI4oRACa/Q==</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082fec0> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError _________________________________________________________________________________ TestCMR.test_searchFromEarthdata __________________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchFromEarthdata> def test_searchFromEarthdata(self): > results = self.maap.searchCollection( instrument="LVIS|UAVSAR", platform="AIRCRAFT|B-200|COMPUTERS", data_center="MAAP Data Management Team|ORNL_DAAC") test/test_CMR.py:70: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:130: in searchCollection results = self._CMR.get_search_results(url=self.config.search_collection_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>S72...stId><HostId>Eqmw09AQAZCCMA4r2QA8tLqjvRJWYmqtk80UIxX6rjkZnXGeJ+JCo3kgjfxFB9kpnCftURiu90FwVGJUHaVBOw==</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082f380> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError _______________________________________________________________________________ TestCMR.test_searchGranuleByGranuleUR _______________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchGranuleByGranuleUR> def test_searchGranuleByGranuleUR(self): > results = self.maap.searchGranule( granule_ur=self._test_ur) test/test_CMR.py:27: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>S72...K1RM2</RequestId><HostId>jJJj3u2XwRx8Gfq93KxEA0CB4yR8ITPRJob9fhbcwe3THS3qJUfiwoXhh++kH9sPdMmQOTKnpNk=</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082ee80> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError _________________________________________________________________________ TestCMR.test_searchGranuleByInstrumentAndSiteName _________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchGranuleByInstrumentAndSiteName> def test_searchGranuleByInstrumentAndSiteName(self): > results = self.maap.searchGranule( instrument=self._test_instrument_name_lvis, site_name=self._test_site_name) test/test_CMR.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>JT3...Q9KHV</RequestId><HostId>FxXr+lrYXKQl2JHapV0fDcE/gMaeTUFN2RP0wwg9IzhZStW8ExWD9VxYUYeKTXys8C1KtwPCLNk=</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082e840> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError _______________________________________________________________________ TestCMR.test_searchGranuleByInstrumentAndTrackNumber ________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchGranuleByInstrumentAndTrackNumber> def test_searchGranuleByInstrumentAndTrackNumber(self): > results = self.maap.searchGranule( instrument=self._test_instrument_name_uavsar, track_number=self._test_track_number, polarization='HH') test/test_CMR.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>JT3...H0V3T</RequestId><HostId>K2suwvVBKKtPhHcUUH4ki4cALpf42AcX1fZx7mPuLew23IdLYBczMj8jvvt6h3QBcMmRdw+XBMk=</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x1208b0180> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError ___________________________________________________________________________ TestCMR.test_searchGranuleWithPipeDelimiters ____________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchGranuleWithPipeDelimiters> def test_searchGranuleWithPipeDelimiters(self): > results = self.maap.searchGranule( instrument="LVIS|UAVSAR", platform="AIRCRAFT") test/test_CMR.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>JT3...4Y3D1</RequestId><HostId>fX4LwJQILEu8v2jz+bxI8gLH8O+ogFmXweHETG0yLlZeokU4JGe20LdjztasPIyTrsIUyO6kqEQ=</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x1208b0400> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError ______________________________________________________________________________ TestCMR.test_searchGranuleWithWildcards ______________________________________________________________________________ self = <test.test_CMR.TestCMR testMethod=test_searchGranuleWithWildcards> def test_searchGranuleWithWildcards(self): > results = self.maap.searchGranule(collection_concept_id="C1200110748-NASA_MAAP", readable_granule_name='*185*') test/test_CMR.py:82: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:71: in searchGranule results = self._CMR.get_search_results(url=self.config.search_granule_url, limit=limit, **kwargs) maap/utils/CMR.py:41: in get_search_results page = ET.XML(unparsed_page) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ text = '<?xml version="1.0" encoding="UTF-8"?>n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>JT3...3GYDX</RequestId><HostId>sBFlA7w0vXTmkApJ6o7R/+zd2ACtuVHTKGCqab2MJBg82o63suMb3Pwq6Gur2zpIvd0N4MkKiUw=</HostId></Error>' parser = <xml.etree.ElementTree.XMLParser object at 0x12082e840> def XML(text, parser=None): """Parse XML document from string constant. This function can be used to embed "XML Literals" in Python code. *text* is a string containing XML data, *parser* is an optional parser instance, defaulting to the standard XMLParser. Returns an Element instance. """ if not parser: parser = XMLParser(target=TreeBuilder()) > parser.feed(text) E xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 /opt/homebrew/Cellar/[email protected]/3.12.2_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/xml/etree/ElementTree.py:1330: ParseError __________________________________________________________________________________ TestDPS.test_registerAlgorithm ___________________________________________________________________________________ self = <test.test_DPS.TestDPS testMethod=test_registerAlgorithm> def test_registerAlgorithm(self): > self.maap.register_algorithm_from_yaml_file("dps_test_algo_config.yaml") test/test_DPS.py:23: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:157: in register_algorithm_from_yaml_file algo_config = algorithm_utils.read_yaml_file(file_path) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ algo_yaml = 'dps_test_algo_config.yaml' def read_yaml_file(algo_yaml): algo_config = dict() > with open(algo_yaml, 'r') as fr: E FileNotFoundError: [Errno 2] No such file or directory: 'dps_test_algo_config.yaml' maap/utils/algorithm_utils.py:17: FileNotFoundError ___________________________________________________________________________________ TestMAAP.test_edc_credentials ___________________________________________________________________________________ self = <test.test_MAAP.TestMAAP testMethod=test_edc_credentials> def test_edc_credentials(self): > results = self.maap.aws.earthdata_s3_credentials('https://data.lpdaac.earthdatacloud.nasa.gov/s3credentials'); test/test_MAAP.py:73: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/AWS.py:62: in earthdata_s3_credentials response.raise_for_status() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <Response [403]> def raise_for_status(self): """Raises :class:`HTTPError`, if one occurred.""" http_error_msg = "" if isinstance(self.reason, bytes): # We attempt to decode utf-8 first because some servers # choose to localize their reason strings. If the string # isn't utf-8, we fall back to iso-8859-1 for all other # encodings. (See PR #3538) try: reason = self.reason.decode("utf-8") except UnicodeDecodeError: reason = self.reason.decode("iso-8859-1") else: reason = self.reason if 400 <= self.status_code < 500: http_error_msg = ( f"{self.status_code} Client Error: {reason} for url: {self.url}" ) elif 500 <= self.status_code < 600: http_error_msg = ( f"{self.status_code} Server Error: {reason} for url: {self.url}" ) if http_error_msg: > raise HTTPError(http_error_msg, response=self) E requests.exceptions.HTTPError: 403 Client Error: FORBIDDEN for url: https://api.maap-project.org/api/members/self/awsAccess/edcCredentials/https%253A%252F%252Fdata.lpdaac.earthdatacloud.nasa.gov%252Fs3credentials ../../../Library/Caches/pypoetry/virtualenvs/maap-py-5b7ungGG-py3.12/lib/python3.12/site-packages/requests/models.py:1024: HTTPError ____________________________________________________________________________________ TestMAAP.test_executeQuery _____________________________________________________________________________________ self = <test.test_MAAP.TestMAAP testMethod=test_executeQuery> def test_executeQuery(self): > response = self.maap.executeQuery( src={ "Collection": { "ShortName": "GEDI Cal/Val Field Data_1", "VersionId": "001" } }, query={ "bbox": [ -122.6, 38.4, -122.5, 38.5 ], "fields": ['project', 'plot', 'p.geom'] } ) E AttributeError: 'MAAP' object has no attribute 'executeQuery' test/test_MAAP.py:77: AttributeError __________________________________________________________________________________ TestMAAP.test_genFromEarthdata ___________________________________________________________________________________ self = <test.test_MAAP.TestMAAP testMethod=test_genFromEarthdata> def test_genFromEarthdata(self): input = """ { "p": "C1200015068-NASA_MAAP!C1200090707-NASA_MAAP!C1200015148-NASA_MAAP", "pg": [ { "exclude": { "echo_granule_id": [ "G1200015109-NASA_MAAP", "G1200015110-NASA_MAAP" ] } } ], "m": "-87.55224609375!75.30249023437501!0!1!0!0,2", "processing_level_id_h": [ "1A", "1B", "2", "4" ], "instrument_h": [ "LVIS", "UAVSAR" ], "platform_h": [ "AIRCRAFT", "B-200", "COMPUTERS" ], "data_center_h": [ "MAAP Data Management Team" ], "bounding_box": "-35.4375,-55.6875,-80.4375,37.6875" } """ var_name = 'maapVar' > testResult = self.maap.getCallFromEarthdataQuery(query=input, variable_name=var_name) test/test_MAAP.py:57: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:109: in getCallFromEarthdataQuery return self._CMR.generateGranuleCallFromEarthDataRequest(query, variable_name, limit) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <maap.utils.CMR.CMR object at 0x1208eac30> query = '\n {\n "p": "C1200015068-NASA_MAAP!C1200090707-NASA_MAAP!C1200015148-NASA_MAAP",\n ...ent Team"\n ],\n "bounding_box": "-35.4375,-55.6875,-80.4375,37.6875"\n }\n ' variable_name = 'maapVar', limit = 1000 def generateGranuleCallFromEarthDataRequest(self, query, variable_name='maap', limit=1000): """ Generate a literal string to use for calling the MAAP API :param query: a Json-formatted string from an Earthdata search-style query. See: https://github.com/MAAP-Project/earthdata-search/blob/master/app/controllers/collections_controller.rb :param variable_name: the name of the MAAP variable to qualify the search call :param limit: the max records to return :return: string in the form of a MAAP API call """ y = json.loads(query) params = [] for key, value in y.items(): if key.endswith("_h"): params.append(key[:-2] + "=\"" + "|".join(value) + "\"") elif key == "bounding_box": params.append(key + "=\"" + value + "\"") elif key == "p": params.append("collection_concept_id=\"" + value.replace("!", "|") + "\"") elif key == "pg": > params.append("readable_granule_name=\"" + '|'.join(value[0]['readable_granule_name']) .replace('"', '\\"') + "\"") E KeyError: 'readable_granule_name' maap/utils/CMR.py:127: KeyError _____________________________________________________________________________________ TestMAAP.test_getProfile ______________________________________________________________________________________ self = <test.test_MAAP.TestMAAP testMethod=test_getProfile> def test_getProfile(self): results = self.maap.profile.account_info() > self.assertTrue(results['id'] > 0) E TypeError: 'NoneType' object is not subscriptable test/test_MAAP.py:17: TypeError ____________________________________________________________________________ TestConfig.test_get_config_url_with_scheme _____________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_get_config_url_with_scheme> def test_get_config_url_with_scheme(self): maap_host = "https://api.maap-project.org/" config_url = config_reader._get_config_url(maap_host) > self.assertEqual("https://api.maap-project.org/api/environment/config", config_url) E AssertionError: 'https://api.maap-project.org/api/environment/config' != 'https://api.maap-project.org/config' E - https://api.maap-project.org/api/environment/config E ? ---------------- E + https://api.maap-project.org/config test/test_config_reader.py:22: AssertionError ___________________________________________________________________________ TestConfig.test_get_config_url_without_scheme ___________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_get_config_url_without_scheme> def test_get_config_url_without_scheme(self): maap_host = "api.maap-project.org" config_url = config_reader._get_config_url(maap_host) > self.assertEqual("https://api.maap-project.org/api/environment/config", config_url) E AssertionError: 'https://api.maap-project.org/api/environment/config' != 'http://api.maap-project.org/config' E - https://api.maap-project.org/api/environment/config E ? - ---------------- E + http://api.maap-project.org/config test/test_config_reader.py:33: AssertionError _________________________________________________________________________________ TestConfig.test_read_conf_default _________________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_read_conf_default> def test_read_conf_default(self): maap = MAAP() > conf = MaapConfig() E TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' test/test_config_reader.py:72: TypeError _________________________________________________________________________________ TestConfig.test_read_conf_env_var _________________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_read_conf_env_var> def test_read_conf_env_var(self): os.environ.setdefault("MAAP_API_HOST", "api.dit.maap-project.org") maap = MAAP() conf = maap.config print(dir(maap.config)) > conf = MaapConfig() E TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' test/test_config_reader.py:60: TypeError --------------------------------------------------------------------------------------- Captured stdout call ---------------------------------------------------------------------------------------- ['_MaapConfig__config', '_PROXY_GRANTING_TICKET', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_api_endpoint', 'algorithm_build', 'algorithm_register', 'aws_access_key', 'aws_access_secret', 'content_type', 'dps_job', 'edc_credentials', 'get', 'indexed_attributes', 'maap_api_root', 'maap_host', 'maap_token', 'mapbox_token', 'mas_algo', 'member', 'member_dps_token', 'page_size', 'requester_pays', 's3_signed_url', 's3_user_upload_bucket', 's3_user_upload_dir', 'search_collection_url', 'search_granule_url', 'tiler_endpoint', 'wmts', 'workspace_bucket_credentials'] _______________________________________________________________________________ TestConfig.test_read_conf_hosted_api ________________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_read_conf_hosted_api> def test_read_conf_hosted_api(self): > maap = MAAP(maap_host="api.dit.maap-project.org") test/test_config_reader.py:51: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:31: in __init__ self.config = MaapConfig(maap_host=maap_host) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <maap.config_reader.MaapConfig object at 0x1230c81d0>, maap_host = 'api.dit.maap-project.org' def __init__(self, maap_host): self.__config = _get_client_config(maap_host) self.maap_host = maap_host > self.maap_api_root = self.__config.get("service").get("maap_api_root") E AttributeError: 'NoneType' object has no attribute 'get' maap/config_reader.py:75: AttributeError ----------------------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------------------- ERROR maap.config_reader:config_reader.py:68 Unable to read maap config from api: 404 Client Error: NOT FOUND for url: https://api.dit.maap-project.org/config ______________________________________________________________________ TestConfig.test_read_conf_localhost_without_scheme_api _______________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_read_conf_localhost_without_scheme_api> def test_read_conf_localhost_without_scheme_api(self): > maap = MAAP(maap_host="localhost:5000") test/test_config_reader.py:64: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap/maap.py:31: in __init__ self.config = MaapConfig(maap_host=maap_host) maap/config_reader.py:73: in __init__ self.__config = _get_client_config(maap_host) maap/config_reader.py:59: in _get_client_config config_url = _get_config_url(maap_host) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ maap_host = 'localhost:5000' def _get_config_url(maap_host): # This is added to remove the assumption of scheme specially for local dev testing # also maintains backwards compatibility for user to use MAAP("api.maap-project.org") base_url = urlparse(maap_host) maap_api_config_endpoint = os.getenv("MAAP_API_CONFIG_ENDPOINT", "api/environment/config") supported_schemes = ("http", "https") if base_url.scheme and base_url.scheme not in supported_schemes: > raise ValueError(f"Unsupported scheme for MAAP API host: {base_url.scheme!r}. Must be one of: {', '.join(map(repr, supported_schemes))}.") E ValueError: Unsupported scheme for MAAP API host: 'localhost'. Must be one of: 'http', 'https'. maap/config_reader.py:27: ValueError ______________________________________________________________________________ TestConfig.test_read_conf_uninitialized ______________________________________________________________________________ self = <test.test_config_reader.TestConfig testMethod=test_read_conf_uninitialized> def test_read_conf_uninitialized(self): with TestConfig().assertRaises(expected_exception=EnvironmentError, msg="Successfully raised exception") as err: > MaapConfig() E TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' test/test_config_reader.py:79: TypeError ========================================================================================= warnings summary ========================================================================================== test/test_Result.py: 16 warnings /Users/greguska/Library/Caches/pypoetry/virtualenvs/maap-py-5b7ungGG-py3.12/lib/python3.12/site-packages/botocore/auth.py:419: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). datetime_now = datetime.datetime.utcnow() test/test_Result.py::test_getData_s3_url_with_fallback_in_order test/test_Result.py::test_getData_s3_url_with_fallback_in_order test/test_Result.py::test_getData_s3_with_multiple_fallbacks test/test_Result.py::test_getData_s3_with_multiple_fallbacks /Users/greguska/Library/Caches/pypoetry/virtualenvs/maap-py-5b7ungGG-py3.12/lib/python3.12/site-packages/botocore/endpoint.py:172: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). response_received_timestamp = datetime.datetime.utcnow() test/test_Result.py::test_getData_s3_url_with_fallback_in_order test/test_Result.py::test_getData_s3_url_with_fallback_in_order test/test_Result.py::test_getData_s3_with_multiple_fallbacks test/test_Result.py::test_getData_s3_with_multiple_fallbacks /Users/greguska/Library/Caches/pypoetry/virtualenvs/maap-py-5b7ungGG-py3.12/lib/python3.12/site-packages/botocore/endpoint.py:155: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). local_timestamp = datetime.datetime.utcnow() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ====================================================================================== short test summary info ====================================================================================== FAILED test/test_CMR.py::TestCMR::test_direct_granuleDownload - FileNotFoundError: [Errno 2] No such file or directory: './tmp/S1A_S3_GRDH_1SDH_20140615T034444_20140615T034512_001055_00107C_8977.zip' FAILED test/test_CMR.py::TestCMR::test_getUrl - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_granuleDownload - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_granuleDownloadExternalDAAC - IndexError: list index out of range FAILED test/test_CMR.py::TestCMR::test_searchCollection - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchFromEarthdata - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchGranuleByGranuleUR - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchGranuleByInstrumentAndSiteName - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchGranuleByInstrumentAndTrackNumber - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchGranuleWithPipeDelimiters - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_CMR.py::TestCMR::test_searchGranuleWithWildcards - xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 39 FAILED test/test_DPS.py::TestDPS::test_registerAlgorithm - FileNotFoundError: [Errno 2] No such file or directory: 'dps_test_algo_config.yaml' FAILED test/test_MAAP.py::TestMAAP::test_edc_credentials - requests.exceptions.HTTPError: 403 Client Error: FORBIDDEN for url: https://api.maap-project.org/api/members/self/awsAccess/edcCredentials/https%253A%252F%252Fdata.lpdaac.earthdatacloud.nasa.g... FAILED test/test_MAAP.py::TestMAAP::test_executeQuery - AttributeError: 'MAAP' object has no attribute 'executeQuery' FAILED test/test_MAAP.py::TestMAAP::test_genFromEarthdata - KeyError: 'readable_granule_name' FAILED test/test_MAAP.py::TestMAAP::test_getProfile - TypeError: 'NoneType' object is not subscriptable FAILED test/test_config_reader.py::TestConfig::test_get_config_url_with_scheme - AssertionError: 'https://api.maap-project.org/api/environment/config' != 'https://api.maap-project.org/config' FAILED test/test_config_reader.py::TestConfig::test_get_config_url_without_scheme - AssertionError: 'https://api.maap-project.org/api/environment/config' != 'http://api.maap-project.org/config' FAILED test/test_config_reader.py::TestConfig::test_read_conf_default - TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' FAILED test/test_config_reader.py::TestConfig::test_read_conf_env_var - TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' FAILED test/test_config_reader.py::TestConfig::test_read_conf_hosted_api - AttributeError: 'NoneType' object has no attribute 'get' FAILED test/test_config_reader.py::TestConfig::test_read_conf_localhost_without_scheme_api - ValueError: Unsupported scheme for MAAP API host: 'localhost'. Must be one of: 'http', 'https'. FAILED test/test_config_reader.py::TestConfig::test_read_conf_uninitialized - TypeError: MaapConfig.__init__() missing 1 required positional argument: 'maap_host' ============================================================================ 23 failed, 32 passed, 24 warnings in 8.02s =============================================================================
The text was updated successfully, but these errors were encountered:
No branches or pull requests
There are a number of tests that fail and need to be refactored. Related to #97
Once fixed, remove
continue-on-error: true
from the Test step in the github workflowThe text was updated successfully, but these errors were encountered: