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  }