diff --git a/tests/manager/models/test_image.py b/tests/manager/models/test_image.py index b956ce5638..4616b85f1e 100644 --- a/tests/manager/models/test_image.py +++ b/tests/manager/models/test_image.py @@ -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", @@ -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)