Skip to content

Commit

Permalink
fix: Add fetch_repositories error handling test_case
Browse files Browse the repository at this point in the history
  • Loading branch information
jopemachine committed Feb 11, 2025
1 parent da9135b commit f45646d
Showing 1 changed file with 35 additions and 27 deletions.
62 changes: 35 additions & 27 deletions tests/manager/models/test_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ def get_graphquery_context(
"get_token": {"token": "fake-token"},
"get_catalog": {
"repositories": [
"error/repo", # error should be skipped
"lablup/python",
"other/dangling-image1",
"other/dangling-image2",
Expand Down Expand Up @@ -236,37 +237,44 @@ def setup_dockerhub_mocking(mocked):
repositories = mock_dockerhub_responses["get_catalog"]["repositories"]

for repo in repositories:
# tags
mock_value = mock_dockerhub_responses["get_tags"]
params = {
"status": 200,
"callback" if isinstance(mock_value, Callable) else "payload": mock_value,
}
# error/repo should be skipped
if repo == "error/repo":
mocked.get(
f"{registry_url}/v2/{repo}/tags/list?n=10",
exception=Exception("Simulated fetch_repositories error"),
)
else:
# tags
mock_value = mock_dockerhub_responses["get_tags"]
params = {
"status": 200,
"callback" if isinstance(mock_value, Callable) else "payload": mock_value,
}

mocked.get(f"{registry_url}/v2/{repo}/tags/list?n=10", **params)
mocked.get(f"{registry_url}/v2/{repo}/tags/list?n=10", **params)

# manifest
mocked.get(
f"{registry_url}/v2/{repo}/manifests/latest",
status=200,
payload=mock_dockerhub_responses["get_manifest"],
headers={
"Content-Type": "application/vnd.docker.distribution.manifest.v2+json",
},
repeat=True,
)
# manifest
mocked.get(
f"{registry_url}/v2/{repo}/manifests/latest",
status=200,
payload=mock_dockerhub_responses["get_manifest"],
headers={
"Content-Type": "application/vnd.docker.distribution.manifest.v2+json",
},
repeat=True,
)

config_data = mock_dockerhub_responses["get_manifest"]["config"]
image_digest = config_data["digest"]
config_data = mock_dockerhub_responses["get_manifest"]["config"]
image_digest = config_data["digest"]

# config blob (JSON)
mocked.get(
f"{registry_url}/v2/{repo}/blobs/{image_digest}",
status=200,
body=json.dumps(mock_dockerhub_responses["get_config"]).encode("utf-8"),
payload=mock_dockerhub_responses["get_config"],
repeat=True,
)
# config blob (JSON)
mocked.get(
f"{registry_url}/v2/{repo}/blobs/{image_digest}",
status=200,
body=json.dumps(mock_dockerhub_responses["get_config"]).encode("utf-8"),
payload=mock_dockerhub_responses["get_config"],
repeat=True,
)

with aioresponses() as mocked:
setup_dockerhub_mocking(mocked)
Expand Down

0 comments on commit f45646d

Please sign in to comment.