github.com/mweagle/Sparta@v1.15.0/testing/provision.go (about) 1 package testing 2 3 import ( 4 "bytes" 5 "os" 6 "testing" 7 8 sparta "github.com/mweagle/Sparta" 9 ) 10 11 // ProvisionEvaluator is the function that is called following a 12 // provision to determine if the result was successful 13 type ProvisionEvaluator func(t *testing.T, didError error) error 14 15 // AssertSuccess is a default handler for the ProvisionRunner. If no 16 // evaluator is supplied, defaults to expecting no didError 17 func AssertSuccess(t *testing.T, didError error) error { 18 if didError != nil { 19 t.Fatal("Provision failed: " + didError.Error()) 20 } 21 return nil 22 } 23 24 // AssertError returns a test evaluator that enforces that didError is not nil 25 func AssertError(message string) ProvisionEvaluator { 26 return func(t *testing.T, didError error) error { 27 t.Logf("Checking provisioning error: %s", didError) 28 if didError == nil { 29 t.Fatal("Failed to reject error due to: " + message) 30 } 31 return nil 32 } 33 } 34 35 // Provision is a convenience function for ProvisionEx 36 func Provision(t *testing.T, 37 lambdaAWSInfos []*sparta.LambdaAWSInfo, 38 evaluator ProvisionEvaluator) { 39 40 ProvisionEx(t, lambdaAWSInfos, nil, nil, nil, false, evaluator) 41 } 42 43 // ProvisionEx handles mock provisioning a service and then 44 // supplying the result to the evaluator function. If no evaluator 45 // is performed it's assumed that the provision operation should succeed without 46 // error. 47 func ProvisionEx(t *testing.T, 48 lambdaAWSInfos []*sparta.LambdaAWSInfo, 49 api *sparta.API, 50 site *sparta.S3Site, 51 workflowHooks *sparta.WorkflowHooks, 52 useCGO bool, 53 evaluator ProvisionEvaluator) { 54 55 if evaluator == nil { 56 evaluator = AssertSuccess 57 } 58 59 logger, loggerErr := sparta.NewLogger("info") 60 if loggerErr != nil { 61 t.Fatalf("Failed to create test logger: %s", loggerErr) 62 } 63 var templateWriter bytes.Buffer 64 err := sparta.Provision(true, 65 "SampleProvision", 66 "", 67 lambdaAWSInfos, 68 nil, 69 nil, 70 os.Getenv("S3_BUCKET"), 71 false, 72 false, 73 "testBuildID", 74 "", 75 "", 76 "", 77 &templateWriter, 78 workflowHooks, 79 logger) 80 if evaluator != nil { 81 err = evaluator(t, err) 82 } 83 if err != nil { 84 t.Fatalf("Failed to apply evaluator: " + err.Error()) 85 } 86 }