def test_layer_package_not_generated_if_filename_populated(self): generator = mock.Mock(spec=packager.BaseLambdaDeploymentPackager) function = create_function_resource('myfunction') layer = models.LambdaLayer(resource_name='layer', layer_name='name', runtime='python2.7', deployment_package=models.DeploymentPackage( filename='original.zip')) function.managed_layer = layer config = Config.create(project_dir='.') p = ManagedLayerDeploymentPackager(None, generator) p.handle(config, layer) assert layer.deployment_package.filename == 'original.zip' assert not generator.create_deployment_package.called
def test_can_generate_layer_package(self): function = create_function_resource('myfunction') function.managed_layer = models.LambdaLayer( resource_name='managed-layer', layer_name='appname-dev-managed-layer', runtime='python2.7', deployment_package=models.DeploymentPackage( models.Placeholder.BUILD_STAGE)) lambda_packager = mock.Mock(spec=packager.BaseLambdaDeploymentPackager) layer_packager = mock.Mock(spec=packager.BaseLambdaDeploymentPackager) lambda_packager.create_deployment_package.return_value = 'package.zip' layer_packager.create_deployment_package.return_value = ( 'package-layer.zip') config = Config.create(project_dir='.') p = ManagedLayerDeploymentPackager(lambda_packager, layer_packager) p.handle(config, function.managed_layer) p.handle(config, function) assert function.deployment_package.filename == 'package.zip' lambda_packager.create_deployment_package.assert_called_with( '.', config.lambda_python_version) assert function.managed_layer.deployment_package.filename == ( 'package-layer.zip') layer_packager.create_deployment_package.assert_called_with( '.', config.lambda_python_version)
def test_managed_layer_removed_if_no_deps(self): function = create_function_resource('myfunction') function.managed_layer = models.LambdaLayer( resource_name='managed-layer', layer_name='appname-dev-managed-layer', runtime='python2.7', deployment_package=models.DeploymentPackage( models.Placeholder.BUILD_STAGE ) ) lambda_packager = mock.Mock(spec=packager.BaseLambdaDeploymentPackager) layer_packager = mock.Mock(spec=packager.BaseLambdaDeploymentPackager) lambda_packager.create_deployment_package.return_value = 'package.zip' layer_packager.create_deployment_package.side_effect = \ packager.EmptyPackageError() config = Config.create(project_dir='.') p = ManagedLayerDeploymentPackager(lambda_packager, layer_packager) p.handle(config, function.managed_layer) p.handle(config, function) # If the deployment package for layers would result in an empty # deployment package, we expect that resource to be removed, it can't # be created on the service. assert function.managed_layer is None