def test_building_image_with_non_accpeted_package_type(self): docker_client_mock = Mock() layer_downloader_mock = Mock() setattr(layer_downloader_mock, "layer_cache", self.layer_cache_dir) docker_client_mock.api.build.return_value = ["mock"] lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) with self.assertRaises(InvalidIntermediateImageError): lambda_image.build("python3.6", "Non-accepted-packagetype", None, [], False) with self.assertRaises(InvalidIntermediateImageError): lambda_image.build("python3.6", None, None, [], False)
def test_building_image_with_no_runtime_only_image_always_build( self, generate_docker_image_version_patch, build_image_patch): docker_client_mock = Mock() layer_downloader_mock = Mock() setattr(layer_downloader_mock, "layer_cache", self.layer_cache_dir) docker_client_mock.api.build.return_value = ["mock"] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.return_value = Mock() lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build(None, IMAGE, "mylambdaimage:v1", ["mylayer"], False), f"mylambdaimage:rapid-{version}", ) # No layers are added, because runtime is not defined. build_image_patch.assert_called_once_with( "mylambdaimage:v1", f"mylambdaimage:rapid-{version}", [], False, stream=ANY) # No Layers are added. layer_downloader_mock.assert_not_called()
def test_force_building_image_that_doesnt_already_exists( self, generate_docker_image_version_patch, build_image_patch): layer_downloader_mock = Mock() layer_downloader_mock.download_all.return_value = ["layers1"] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.side_effect = ImageNotFound( "image not found") lambda_image = LambdaImage(layer_downloader_mock, False, True, docker_client=docker_client_mock) actual_image_id = lambda_image.build("python3.6", ["layers1"]) self.assertEquals(actual_image_id, "samcli/lambda:image-version") layer_downloader_mock.download_all.assert_called_once_with(["layers1"], True) generate_docker_image_version_patch.assert_called_once_with( ["layers1"], "python3.6") docker_client_mock.images.get.assert_called_once_with( "samcli/lambda:image-version") build_image_patch.assert_called_once_with( "lambci/lambda:python3.6", "samcli/lambda:image-version", ["layers1"])
def test_not_building_image_that_already_exists( self, generate_docker_image_version_patch, build_image_patch): layer_downloader_mock = Mock() layer_mock = Mock() layer_mock.name = "layers1" layer_mock.is_defined_within_template = False layer_downloader_mock.download_all.return_value = [layer_mock] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.return_value = Mock() lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) actual_image_id = lambda_image.build("python3.6", ZIP, None, [layer_mock], False) self.assertEqual(actual_image_id, "samcli/lambda:image-version") layer_downloader_mock.download_all.assert_called_once_with( [layer_mock], False) generate_docker_image_version_patch.assert_called_once_with( [layer_mock], "python3.6") docker_client_mock.images.get.assert_called_once_with( "samcli/lambda:image-version") build_image_patch.assert_not_called()
def test_building_image_with_no_layers(self): docker_client_mock = Mock() lambda_image = LambdaImage("layer_downloader", False, False, docker_client=docker_client_mock) self.assertEquals(lambda_image.build("python3.6", []), "lambci/lambda:python3.6")
def test_building_image_with_go_debug(self): docker_client_mock = Mock() lambda_image = LambdaImage("layer_downloader", False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build("go1.x", [], True), f"amazon/aws-sam-cli-emulation-image-go1.x:debug-{version}")
def test_building_image_with_no_layers(self): docker_client_mock = Mock() lambda_image = LambdaImage("layer_downloader", False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build("python3.6", [], False), f"amazon/aws-sam-cli-emulation-image-python3.6:rapid-{version}")
def test_building_image_with_go_debug(self): docker_client_mock = Mock() layer_downloader_mock = Mock() setattr(layer_downloader_mock, "layer_cache", self.layer_cache_dir) docker_client_mock.api.build.return_value = ["mock"] lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build("go1.x", ZIP, None, [], True), f"amazon/aws-sam-cli-emulation-image-go1.x:debug-{version}", )
def test_building_image_with_no_layers_extensions_preview( self, PreviewEnabledMock): docker_client_mock = Mock() PreviewEnabledMock.return_value = True lambda_image = LambdaImage("layer_downloader", False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build("python3.6", [], False), f"amazon/aws-sam-cli-emulation-image-python3.6:preview-rapid-{version}", )
def test_building_image_with_no_runtime_only_image(self): docker_client_mock = Mock() layer_downloader_mock = Mock() setattr(layer_downloader_mock, "layer_cache", self.layer_cache_dir) docker_client_mock.api.build.return_value = ["mock"] lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build(None, IMAGE, "mylambdaimage:v1", [], False), f"mylambdaimage:rapid-{version}", )
def test_building_image_with_no_layers(self): docker_client_mock = Mock() layer_downloader_mock = Mock() setattr(layer_downloader_mock, "layer_cache", self.layer_cache_dir) docker_client_mock.api.build.return_value = ["mock"] lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) self.assertEqual( lambda_image.build("python3.6", ZIP, None, []), f"amazon/aws-sam-cli-emulation-image-python3.6:rapid-{version}", )
def test_not_force_building_image_that_doesnt_already_exists(self, generate_docker_image_version_patch, build_image_patch): layer_downloader_mock = Mock() layer_downloader_mock.download_all.return_value = ["layers1"] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.side_effect = ImageNotFound("image not found") lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) actual_image_id = lambda_image.build("python3.6", ["layers1"]) self.assertEquals(actual_image_id, "samcli/lambda:image-version") layer_downloader_mock.download_all.assert_called_once_with(["layers1"], False) generate_docker_image_version_patch.assert_called_once_with(["layers1"], "python3.6") docker_client_mock.images.get.assert_called_once_with("samcli/lambda:image-version") build_image_patch.assert_called_once_with("lambci/lambda:python3.6", "samcli/lambda:image-version", ["layers1"])
def test_not_force_building_image_that_doesnt_already_exists( self, generate_docker_image_version_patch, build_image_patch): layer_downloader_mock = Mock() layer_downloader_mock.download_all.return_value = ["layers1"] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.side_effect = ImageNotFound( "image not found") stream = io.StringIO() lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) actual_image_id = lambda_image.build("python3.6", ZIP, None, ["layers1"], False, stream=stream) self.assertEqual(actual_image_id, "samcli/lambda:image-version") layer_downloader_mock.download_all.assert_called_once_with(["layers1"], False) generate_docker_image_version_patch.assert_called_once_with( ["layers1"], "python3.6") docker_client_mock.images.get.assert_called_once_with( "samcli/lambda:image-version") build_image_patch.assert_called_once_with( "amazon/aws-sam-cli-emulation-image-python3.6:latest", "samcli/lambda:image-version", ["layers1"], False, stream=stream, )
def test_not_building_image_that_already_exists(self, generate_docker_image_version_patch, build_image_patch): layer_downloader_mock = Mock() layer_mock = Mock() layer_mock.name = "layers1" layer_mock.is_defined_within_template = False layer_downloader_mock.download_all.return_value = [layer_mock] generate_docker_image_version_patch.return_value = "image-version" docker_client_mock = Mock() docker_client_mock.images.get.return_value = Mock() lambda_image = LambdaImage(layer_downloader_mock, False, False, docker_client=docker_client_mock) actual_image_id = lambda_image.build("python3.6", [layer_mock]) self.assertEquals(actual_image_id, "samcli/lambda:image-version") layer_downloader_mock.download_all.assert_called_once_with([layer_mock], False) generate_docker_image_version_patch.assert_called_once_with([layer_mock], "python3.6") docker_client_mock.images.get.assert_called_once_with("samcli/lambda:image-version") build_image_patch.assert_not_called()
def test_building_image_with_no_layers(self): docker_client_mock = Mock() lambda_image = LambdaImage("layer_downloader", False, False, docker_client=docker_client_mock) self.assertEquals(lambda_image.build("python3.6", []), "lambci/lambda:python3.6")