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  }