def job_with_1_asset(con100, requests_mock, tmp_path) -> BatchJob: requests_mock.get(API_URL + "/jobs/jj1/results", json={"assets": { "1.tiff": {"href": API_URL + "/dl/jjr1.tiff", "type": "image/tiff; application=geotiff"}, }}) requests_mock.get(API_URL + "/dl/jjr1.tiff", content=TIFF_CONTENT) job = BatchJob("jj1", connection=con100) return job
def test_get_results_download_file_other_domain(con100, requests_mock, tmp_path): """https://github.com/Open-EO/openeo-python-client/issues/201""" secret = "!secret token!" requests_mock.get(API_URL + '/credentials/basic', json={"access_token": secret}) def get_results(request, context): assert "auth" in repr(request.headers).lower() assert secret in repr(request.headers) return {"assets": { "1.tiff": {"href": "https://evilcorp.test/dl/jjr1.tiff", "type": "image/tiff; application=geotiff"}, }} def download_tiff(request, context): assert "auth" not in repr(request.headers).lower() assert secret not in repr(request.headers) return TIFF_CONTENT requests_mock.get(API_URL + "/jobs/jj1/results", json=get_results) requests_mock.get("https://evilcorp.test/dl/jjr1.tiff", content=download_tiff) con100.authenticate_basic("john", "j0hn") job = BatchJob("jj1", connection=con100) target = tmp_path / "result.tiff" res = job.get_results().download_file(target) assert res == target with target.open("rb") as f: assert f.read() == TIFF_CONTENT
def test_result_asset_load_bytes(con100, requests_mock): href = API_URL + "/dl/jjr1.tiff" requests_mock.get(href, content=TIFF_CONTENT) job = BatchJob("jj", connection=con100) asset = ResultAsset(job, name="out.tiff", href=href, metadata={"type": "image/tiff; application=geotiff"}) res = asset.load_bytes() assert res == TIFF_CONTENT
def test_result_asset_load_json(con100, requests_mock): href = API_URL + "/dl/jjr1.json" requests_mock.get(href, json={"bands": [1, 2, 3]}) job = BatchJob("jj", connection=con100) asset = ResultAsset(job, name="out.json", href=href, metadata={"type": "application/json"}) res = asset.load_json() assert res == {"bands": [1, 2, 3]}
def test_get_results_download_files_include_stac_metadata( job_with_2_assets: BatchJob, tmp_path, include_stac_metadata, expected ): results = job_with_2_assets.get_results() target = tmp_path / "folder" downloads = results.download_files(target, include_stac_metadata=include_stac_metadata) assert target.is_dir() assert set(downloads) == set(target / p for p in expected) assert set(p.name for p in target.iterdir()) == expected
def test_download_result_040(session040, requests_mock, tmp_path): requests_mock.get(API_URL + "/jobs/jj/results", json={"links": [ {"href": API_URL + "/dl/jjr1.tiff"}, ]}) requests_mock.get(API_URL + "/dl/jjr1.tiff", content=TIFF_CONTENT) job = BatchJob("jj", connection=session040) assert job.list_results() == {'links': [{'href': 'https://oeo.test/dl/jjr1.tiff'}]} target = tmp_path / "result.tiff" res = job.download_result(target) assert res == target with target.open("rb") as f: assert f.read() == TIFF_CONTENT
def test_result_asset_download_file(con100, requests_mock, tmp_path): href = API_URL + "/dl/jjr1.tiff" requests_mock.get(href, content=TIFF_CONTENT) job = BatchJob("jj", connection=con100) asset = ResultAsset(job, name="1.tiff", href=href, metadata={'type': 'image/tiff; application=geotiff'}) target = tmp_path / "res.tiff" path = asset.download(target) assert isinstance(path, Path) assert path.name == "res.tiff" with path.open("rb") as f: assert f.read() == TIFF_CONTENT
def job_with_2_assets(con100, requests_mock, tmp_path) -> BatchJob: requests_mock.get(API_URL + "/jobs/jj2/results", json={ # This is a STAC Item "type": "Feature", "assets": { "1.tiff": {"href": API_URL + "/dl/jjr1.tiff", "type": "image/tiff; application=geotiff"}, "2.tiff": {"href": API_URL + "/dl/jjr2.tiff", "type": "image/tiff; application=geotiff"}, } }) requests_mock.get(API_URL + "/dl/jjr1.tiff", content=TIFF_CONTENT) requests_mock.get(API_URL + "/dl/jjr2.tiff", content=TIFF_CONTENT) job = BatchJob("jj2", connection=con100) return job
def test_download_results_040(session040, requests_mock, tmp_path): requests_mock.get(API_URL + "/jobs/jj/results", json={"links": [ {"href": API_URL + "/dl/jjr1.tiff", "type": "image/tiff"}, {"href": API_URL + "/dl/jjr2.tiff", "type": "image/tiff"}, ]}) requests_mock.get(API_URL + "/dl/jjr1.tiff", content=TIFF_CONTENT) requests_mock.get(API_URL + "/dl/jjr2.tiff", content=TIFF_CONTENT) job = BatchJob("jj", connection=session040) target = tmp_path / "folder" target.mkdir() downloads = job.download_results(target) assert downloads == { target / "jjr1.tiff": {"href": API_URL + "/dl/jjr1.tiff", "type": "image/tiff"}, target / "jjr2.tiff": {"href": API_URL + "/dl/jjr2.tiff", "type": "image/tiff"}, } assert set(p.name for p in target.iterdir()) == {"jjr1.tiff", "jjr2.tiff"} with (target / "jjr1.tiff").open("rb") as f: assert f.read() == TIFF_CONTENT with (target / "jjr2.tiff").open("rb") as f: assert f.read() == TIFF_CONTENT