From a83de5454bb390cd8b96aeef61a62fe2c372c7b2 Mon Sep 17 00:00:00 2001 From: Chris/0 Date: Thu, 11 Apr 2024 09:43:10 -0400 Subject: [PATCH] Cover Another Test Case See: #6909 --- .../unit/lib/build_module/test_app_builder.py | 2 +- tests/unit/lib/package/test_ecr_uploader.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/tests/unit/lib/build_module/test_app_builder.py b/tests/unit/lib/build_module/test_app_builder.py index eaa5655d42..19d2d47cc0 100644 --- a/tests/unit/lib/build_module/test_app_builder.py +++ b/tests/unit/lib/build_module/test_app_builder.py @@ -1756,7 +1756,7 @@ def test_loads_image_archive(self, mock_open): self.assertEqual(id, image) @patch("builtins.open", new_callable=mock_open) - def test_must_represent_a_single_image(self, mock_open): + def test_archive_must_represent_a_single_image(self, mock_open): self.docker_client_mock.images.load.return_value = [ Mock(id="sha256:1a2b3c4d5e6f"), Mock(id="sha256:1f2e3d4c5b6a"), diff --git a/tests/unit/lib/package/test_ecr_uploader.py b/tests/unit/lib/package/test_ecr_uploader.py index 49bbf38c50..3009b367ca 100644 --- a/tests/unit/lib/package/test_ecr_uploader.py +++ b/tests/unit/lib/package/test_ecr_uploader.py @@ -1,3 +1,5 @@ +import docker + from unittest import TestCase from unittest.mock import MagicMock, Mock, call, mock_open, patch @@ -288,6 +290,27 @@ def test_upload_failure_if_archive_represents_multiple_images(self, mock_open, m with self.assertRaises(DockerPushFailedError): ecr_uploader.upload(image, resource_name=resource_name) + @patch.object(Path, "is_file", return_value=False) + def test_upload_failure_if_image_archive_does_not_exist(self, mock_is_file): + resource_name = "HelloWorldFunction" + image = "./path/to/archive.tar.gz" + + # this error is raised because we ask the docker service for an image + # with an id or tag which resembles a file path (as `image` above) + self.docker_client.images.get.side_effect = docker.errors.ImageNotFound("no such image") + + ecr_uploader = ECRUploader( + docker_client=self.docker_client, + ecr_client=self.ecr_client, + ecr_repo=self.ecr_repo, + ecr_repo_multi=self.ecr_repo_multi, + tag=self.tag, + ) + ecr_uploader.login = MagicMock() + + with self.assertRaises(DockerPushFailedError): + ecr_uploader.upload(image, resource_name=resource_name) + @patch("samcli.lib.package.ecr_uploader.click.echo") def test_delete_artifact_successful(self, patched_click_echo): ecr_uploader = ECRUploader(