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 }