diff --git a/moto/ecr/models.py b/moto/ecr/models.py index e20c550c9..79ef9cf52 100644 --- a/moto/ecr/models.py +++ b/moto/ecr/models.py @@ -200,17 +200,22 @@ class ECRBackend(BaseBackend): """ maxResults and filtering not implemented """ - images = [] - for repository in self.repositories.values(): - if repository_name: - if repository.name != repository_name: - continue + repository = None + found = False + if repository_name in self.repositories: + repository = self.repositories[repository_name] if registry_id: - if repository.registry_id != registry_id: - continue + if repository.registry_id == registry_id: + found = True + else: + found = True - for image in repository.images: - images.append(image) + if not found: + raise RepositoryNotFoundException(repository_name, registry_id or DEFAULT_REGISTRY_ID) + + images = [] + for image in repository.images: + images.append(image) return images def describe_images(self, repository_name, registry_id=None, image_ids=None): diff --git a/tests/test_ecr/test_ecr_boto3.py b/tests/test_ecr/test_ecr_boto3.py index 7651dc832..d689e4e18 100644 --- a/tests/test_ecr/test_ecr_boto3.py +++ b/tests/test_ecr/test_ecr_boto3.py @@ -247,9 +247,31 @@ def test_list_images(): len(response['imageIds']).should.be(1) response['imageIds'][0]['imageTag'].should.equal('oldest') - response = client.list_images(repositoryName='test_repository_2', registryId='109876543210') - type(response['imageIds']).should.be(list) - len(response['imageIds']).should.be(0) + +@mock_ecr +def test_list_images_from_repository_that_doesnt_exist(): + client = boto3.client('ecr', region_name='us-east-1') + _ = client.create_repository( + repositoryName='test_repository_1' + ) + + # non existing repo + error_msg = re.compile( + r".*The repository with name 'repo-that-doesnt-exist' does not exist in the registry with id '123'.*", + re.MULTILINE) + client.list_images.when.called_with( + repositoryName='repo-that-doesnt-exist', + registryId='123', + ).should.throw(Exception, error_msg) + + # repo does not exist in specified registry + error_msg = re.compile( + r".*The repository with name 'test_repository_1' does not exist in the registry with id '222'.*", + re.MULTILINE) + client.list_images.when.called_with( + repositoryName='test_repository_1', + registryId='222', + ).should.throw(Exception, error_msg) @mock_ecr