github.com/mweagle/Sparta@v1.15.0/provision_test.go (about) 1 package sparta 2 3 import ( 4 "testing" 5 6 gocf "github.com/mweagle/go-cloudformation" 7 "github.com/pkg/errors" 8 "github.com/sirupsen/logrus" 9 ) 10 11 type cloudFormationProvisionTestResource struct { 12 gocf.CloudFormationCustomResource 13 ServiceToken string 14 TestKey interface{} 15 } 16 17 func customResourceTestProvider(resourceType string) gocf.ResourceProperties { 18 switch resourceType { 19 case "Custom::ProvisionTestEmpty": 20 { 21 return &cloudFormationProvisionTestResource{} 22 } 23 default: 24 return nil 25 } 26 } 27 28 func init() { 29 gocf.RegisterCustomResourceProvider(customResourceTestProvider) 30 } 31 32 func TestProvision(t *testing.T) { 33 testProvision(t, testLambdaData(), nil) 34 } 35 36 func templateDecorator(serviceName string, 37 lambdaResourceName string, 38 lambdaResource gocf.LambdaFunction, 39 resourceMetadata map[string]interface{}, 40 S3Bucket string, 41 S3Key string, 42 buildID string, 43 cfTemplate *gocf.Template, 44 context map[string]interface{}, 45 logger *logrus.Logger) error { 46 47 // Add an empty resource 48 newResource, err := newCloudFormationResource("Custom::ProvisionTestEmpty", logger) 49 if nil != err { 50 return errors.Wrapf(err, "Failed to create test resource") 51 } 52 customResource := newResource.(*cloudFormationProvisionTestResource) 53 customResource.ServiceToken = "arn:aws:sns:us-east-1:84969EXAMPLE:CRTest" 54 customResource.TestKey = "Hello World" 55 cfTemplate.AddResource("ProvisionTestResource", customResource) 56 57 // Add an output 58 cfTemplate.Outputs["OutputDecorationTest"] = &gocf.Output{ 59 Description: "Information about the value", 60 Value: gocf.String("My key"), 61 } 62 return nil 63 } 64 65 func TestDecorateProvision(t *testing.T) { 66 67 lambdas := testLambdaData() 68 lambdas[0].Decorator = templateDecorator 69 testProvision(t, lambdas, nil) 70 }