def test_layers_created_from_template_resources(self): resources = { "Layer": {"Type": "AWS::Lambda::LayerVersion", "Properties": {"Content": {"Bucket": "bucket"}}}, "ServerlessLayer": {"Type": "AWS::Serverless::LayerVersion", "Properties": {"ContentUri": "/somepath"}}, } list_of_layers = [ {"Ref": "Layer"}, {"Ref": "ServerlessLayer"}, "arn:aws:lambda:region:account-id:layer:layer-name:1", {"NonRef": "Something"}, ] actual = SamFunctionProvider._parse_layer_info( Mock(stack_path=STACK_PATH, location="template.yaml", resources=resources), list_of_layers ) for (actual_layer, expected_layer) in zip( actual, [ LayerVersion("Layer", ".", stack_path=STACK_PATH), LayerVersion("ServerlessLayer", "/somepath", stack_path=STACK_PATH), LayerVersion("arn:aws:lambda:region:account-id:layer:layer-name:1", None, stack_path=STACK_PATH), ], ): self.assertEqual(actual_layer, expected_layer)
def test_return_empty_list_on_no_layers(self): resources = {"Function": {"Type": "AWS::Serverless::Function", "Properties": {}}} actual = SamFunctionProvider._parse_layer_info( Mock(stack_path=STACK_PATH, location="template.yaml", resources=resources), [] ) self.assertEqual(actual, [])
def test_return_empty_list_on_no_layers(self): resources = { "Function": { "Type": "AWS::Serverless::Function", "Properties": {} } } actual = SamFunctionProvider._parse_layer_info([], resources) self.assertEqual(actual, [])
def test_must_ignore_opt_in_AmazonLinux1803_layer(self): resources = {} list_of_layers = [ "arn:aws:lambda:region:account-id:layer:layer-name:1", "arn:aws:lambda:::awslayer:AmazonLinux1803", ] actual = SamFunctionProvider._parse_layer_info(list_of_layers, resources) for (actual_layer, expected_layer) in zip( actual, [LayerVersion("arn:aws:lambda:region:account-id:layer:layer-name:1", None)] ): self.assertEqual(actual_layer, expected_layer)
def test_must_ignore_opt_in_AmazonLinux1803_layer(self): resources = {} list_of_layers = [ "arn:aws:lambda:region:account-id:layer:layer-name:1", "arn:aws:lambda:::awslayer:AmazonLinux1803", ] actual = SamFunctionProvider._parse_layer_info( Mock(stack_path=STACK_PATH, location="template.yaml", resources=resources), list_of_layers ) for (actual_layer, expected_layer) in zip( actual, [LayerVersion("arn:aws:lambda:region:account-id:layer:layer-name:1", None, stack_path=STACK_PATH)] ): self.assertEqual(actual_layer, expected_layer)
def test_raise_on_AmazonLinux1703_layer_provided(self, resources, layer_reference): with self.assertRaises(InvalidLayerVersionArn): SamFunctionProvider._parse_layer_info([layer_reference], resources)
def test_raise_on_invalid_layer_resource(self, resources, layer_reference): with self.assertRaises(InvalidLayerReference): SamFunctionProvider._parse_layer_info([layer_reference], resources)