github.com/mweagle/Sparta@v1.15.0/discovery_test.go (about)

     1  package sparta
     2  
     3  import (
     4  	"encoding/base64"
     5  	"encoding/json"
     6  	"os"
     7  	"testing"
     8  )
     9  
    10  var discoveryDataNoTags = `
    11  {
    12  	"ResourceID": "mainhelloWorldGETLambda3d6fd4fce31e46927fb59e0cfe2f20461a69490a",
    13  	"Region": "us-west-2",
    14  	"StackID": "arn:aws:cloudformation:us-west-2:123412341234:stack/SpartaDDB-mweagle/c4ada6d0-d697-11e7-9b91-50d5ca789e82",
    15  	"StackName": "SpartaDDB-mweagle",
    16  	"Resources": {
    17  			"DynamoDBad8db2fc80a1af0b5bacfbc66b5ae671301d5e96": {
    18  					"ResourceID": "DynamoDBad8db2fc80a1af0b5bacfbc66b5ae671301d5e96",
    19  					"ResourceRef": "SpartaDDB-mweagle-DynamoDBad8db2fc80a1af0b5bacfbc66b5ae671301d5e96-1EU295I6O4XJH",
    20  					"ResourceType": "AWS::DynamoDB::Table",
    21  					"Properties": {
    22  							"StreamArn": "arn:aws:dynamodb:us-west-2:123412341234:table/SpartaDDB-mweagle-DynamoDBad8db2fc80a1af0b5bacfbc66b5ae671301d5e96-1EU295I6O4XJH/stream/2017-12-03T15:37:38.943"
    23  					}
    24  			}
    25  	}
    26  }
    27  `
    28  
    29  func TestDiscoveryInitialized(t *testing.T) {
    30  	// Ensure that sparta.Discover() can only be called from a lambda function
    31  	logger, _ := NewLogger("warning")
    32  
    33  	// Encode the data, stuff it into the environment variable
    34  	encodedString := base64.StdEncoding.EncodeToString([]byte(discoveryDataNoTags))
    35  	os.Setenv(envVarDiscoveryInformation, encodedString)
    36  
    37  	// Initialize the data
    38  	initializeDiscovery(logger)
    39  
    40  	configuration, err := Discover()
    41  	t.Logf("Configuration: %#v", configuration)
    42  	t.Logf("Error: %#v", err)
    43  	if err != nil {
    44  		t.Errorf("sparta.Discover() failed to initialize from environment")
    45  	}
    46  	t.Logf("Properly unmarshaled environment data")
    47  }
    48  
    49  func TestDiscoveryNotInitialized(t *testing.T) {
    50  	configuration, err := Discover()
    51  	t.Logf("Configuration: %#v", configuration)
    52  	t.Logf("Error: %#v", err)
    53  	if err != nil {
    54  		t.Errorf("sparta.Discover() failed to error when not initialized")
    55  	}
    56  	t.Logf("Properly rejected unintialized discovery data")
    57  }
    58  
    59  func TestDiscoveryUnmarshalNoTags(t *testing.T) {
    60  	// Ensure that sparta.Discover() can only be called from a lambda function
    61  	var info DiscoveryInfo
    62  	err := json.Unmarshal([]byte(discoveryDataNoTags), &info)
    63  	if nil != err {
    64  		t.Errorf("Failed to unmarshal discovery data without tags")
    65  	}
    66  	if len(info.Resources) != 1 {
    67  		t.Errorf("Failed to unmarshal single resource")
    68  	}
    69  	t.Logf("Discovery Info: %#v", info)
    70  }
    71  
    72  func TestDiscoveryEmptyMetadata(t *testing.T) {
    73  	// Ensure that sparta.Discover() can only be called from a lambda function
    74  	var info DiscoveryInfo
    75  	err := json.Unmarshal([]byte("{}"), &info)
    76  	if nil != err {
    77  		t.Errorf("Failed to unmarshal empty discovery data")
    78  	}
    79  	t.Logf("Discovery Info: %#v", info)
    80  }