Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit b08e8b1

Browse files
authored
fix integration tests (#92)
* fix integration tests * more fixes
1 parent 025035c commit b08e8b1

5 files changed

+76
-25
lines changed

tests/integration_test_10_catalogue.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ def test_catalogue_collections_keywords(api_anon_client: ApiClient) -> None:
4242

4343

4444
def test_catalogue_collection_submit(collection: Collection) -> None:
45-
remote = collection.submit()
45+
remote = collection.submit(date="1990-01-01")
4646
assert isinstance(remote, Remote)
4747
assert remote.collection_id == "test-adaptor-mars"
48-
assert remote.request == {}
48+
assert remote.request == {"date": "1990-01-01"}
4949

5050

5151
def test_catalogue_collection_begin_datetime(collection: Collection) -> None:

tests/integration_test_20_processing.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ def test_processing_estimate_costs(api_anon_client: ApiClient) -> None:
5454
assert "cost" in result
5555

5656

57-
def test_processing_get_jobs_satus(api_anon_client: ApiClient) -> None:
58-
remote = api_anon_client.submit("test-adaptor-url", foo="bar")
57+
def test_processing_get_jobs_status(api_anon_client: ApiClient) -> None:
58+
remote = api_anon_client.submit("test-adaptor-dummy", format="foo")
5959
request_uid = remote.request_uid
60-
with pytest.raises(HTTPError):
60+
with pytest.raises(HTTPError, match="400 Client Error: Bad Request"):
6161
remote.make_results()
6262
assert request_uid in api_anon_client.get_jobs(status="failed").job_ids
6363
assert request_uid not in api_anon_client.get_jobs(status="successful").job_ids

tests/integration_test_30_remote.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@ def test_remote_json(remote: Remote) -> None:
4141

4242

4343
def test_remote_request(remote: Remote) -> None:
44-
assert remote.request == {"size": 1}
44+
assert remote.request == {
45+
"elapsed": 0.0,
46+
"format": "grib",
47+
"size": 1,
48+
}
4549

4650

4751
def test_remote_request_uid(remote: Remote) -> None:
@@ -53,7 +57,7 @@ def test_remote_status(remote: Remote) -> None:
5357

5458

5559
def test_remote_failed(api_anon_client: ApiClient) -> None:
56-
remote = api_anon_client.submit("test-adaptor-url", foo="bar")
60+
remote = api_anon_client.submit("test-adaptor-dummy", format="foo")
5761
with pytest.raises(HTTPError, match="400 Client Error: Bad Request"):
5862
remote.download()
5963
assert remote.status == "failed"

tests/integration_test_70_legacy_api_client.py

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import pytest
1010
import requests
11-
from urllib3.exceptions import InsecureRequestWarning
1211

1312
from cads_api_client import processing
1413
from cads_api_client.legacy_api_client import LegacyApiClient
@@ -148,42 +147,47 @@ def test_legacy_api_client_wait_until_complete(
148147

149148

150149
@pytest.mark.parametrize(
151-
"collection_id,raises",
150+
"collection_id,format,raises",
152151
[
153-
("test-adaptor-dummy", does_not_raise()),
154-
("test-adaptor-mars", pytest.raises(Exception, match="400 Client Error")),
152+
("test-adaptor-dummy", "grib", does_not_raise()),
153+
(
154+
"test-adaptor-dummy",
155+
"foo",
156+
pytest.raises(Exception, match="400 Client Error"),
157+
),
155158
],
156159
)
157160
def test_legacy_api_client_update(
158161
api_root_url: str,
159162
api_anon_key: str,
160163
collection_id: str,
164+
format: str,
161165
raises: contextlib.nullcontext[Any],
162166
) -> None:
163167
client = LegacyApiClient(
164168
url=api_root_url, key=api_anon_key, wait_until_complete=False, retry_max=0
165169
)
166-
remote = client.retrieve(collection_id, {})
170+
remote = client.retrieve(collection_id, {"format": format})
167171
assert isinstance(remote, processing.Remote)
168172
with raises:
169173
legacy_update(remote)
170174

171175

176+
@pytest.mark.filterwarnings("ignore:Unverified HTTPS")
172177
def test_legacy_api_client_kwargs(api_root_url: str, api_anon_key: str) -> None:
173178
session = requests.Session()
174-
with pytest.warns(InsecureRequestWarning):
175-
client = LegacyApiClient(
176-
url=api_root_url,
177-
key=api_anon_key,
178-
verify=0,
179-
timeout=1,
180-
progress=False,
181-
delete=True,
182-
retry_max=2,
183-
sleep_max=3,
184-
wait_until_complete=False,
185-
session=session,
186-
)
179+
client = LegacyApiClient(
180+
url=api_root_url,
181+
key=api_anon_key,
182+
verify=0,
183+
timeout=1,
184+
progress=False,
185+
delete=True,
186+
retry_max=2,
187+
sleep_max=3,
188+
wait_until_complete=False,
189+
session=session,
190+
)
187191
assert client.client.url == api_root_url
188192
assert client.client.key == api_anon_key
189193
assert client.client.verify is False

tests/integration_test_80_adaptors.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
import filecmp
33
import os
44
import pathlib
5+
import zipfile
6+
7+
import pytest
8+
from requests import HTTPError
59

610
from cads_api_client import ApiClient
711

@@ -17,6 +21,38 @@ def test_adaptors_dummy(api_anon_client: ApiClient, tmp_path: pathlib.Path) -> N
1721
assert os.path.exists(target)
1822

1923

24+
def test_adaptors_dummy_cached(
25+
api_anon_client: ApiClient, tmp_path: pathlib.Path
26+
) -> None:
27+
collection_id = "test-adaptor-dummy"
28+
target_grib = str(tmp_path / "dummy.grib")
29+
request = {"size": 1, "_timestamp": datetime.datetime.now().isoformat()}
30+
results = api_anon_client.submit_and_wait_on_results(collection_id, **request)
31+
assert results.content_type == "application/x-grib"
32+
assert results.download(target_grib) == target_grib
33+
assert os.path.getsize(target_grib) == 1
34+
expected_bytes = open(target_grib, "rb").read()
35+
36+
target_netcdf = str(tmp_path / "dummy.nc")
37+
results = api_anon_client.submit_and_wait_on_results(
38+
collection_id, format="netcdf", **request
39+
)
40+
assert results.content_type == "application/netcdf"
41+
assert results.download(target_netcdf) == target_netcdf
42+
assert os.path.getsize(target_netcdf) == 1
43+
assert expected_bytes == open(target_netcdf, "rb").read()
44+
45+
target_zip = str(tmp_path / "dummy.zip")
46+
results = api_anon_client.submit_and_wait_on_results(
47+
collection_id, format="zip", **request
48+
)
49+
assert results.content_type == "application/zip"
50+
assert results.download(target_zip) == target_zip
51+
with zipfile.ZipFile(target_zip, "r") as zip_fp:
52+
with zip_fp.open("dummy_0.grib", "r") as zip_grib_fs:
53+
assert expected_bytes == zip_grib_fs.read()
54+
55+
2056
def test_adaptors_url(api_anon_client: ApiClient, tmp_path: pathlib.Path) -> None:
2157
collection_id = "test-adaptor-url"
2258
request = {
@@ -37,6 +73,13 @@ def test_adaptors_url(api_anon_client: ApiClient, tmp_path: pathlib.Path) -> Non
3773
assert filecmp.cmp(target1, target2)
3874

3975

76+
def test_adaptors_url_constraints(
77+
api_anon_client: ApiClient, tmp_path: pathlib.Path
78+
) -> None:
79+
with pytest.raises(HTTPError, match="400 Client Error: Bad Request"):
80+
api_anon_client.submit("test-adaptor-url", foo="bar")
81+
82+
4083
def test_adaptors_direct_mars(
4184
api_anon_client: ApiClient, tmp_path: pathlib.Path
4285
) -> None:

0 commit comments

Comments
 (0)