github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/aws/keypair_test.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "strings" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/aws" 9 "github.com/aws/aws-sdk-go/service/ec2" 10 "github.com/gruntwork-io/terratest/modules/random" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestCreateImportAndDeleteEC2KeyPair(t *testing.T) { 15 t.Parallel() 16 17 region := GetRandomStableRegion(t, nil, nil) 18 uniqueID := random.UniqueId() 19 name := fmt.Sprintf("test-key-pair-%s", uniqueID) 20 21 keyPair := CreateAndImportEC2KeyPair(t, region, name) 22 defer deleteKeyPair(t, keyPair) 23 24 assert.True(t, keyPairExists(t, keyPair)) 25 assert.Equal(t, name, keyPair.Name) 26 assert.Equal(t, region, keyPair.Region) 27 assert.Contains(t, keyPair.PublicKey, "ssh-rsa") 28 assert.Contains(t, keyPair.PrivateKey, "-----BEGIN RSA PRIVATE KEY-----") 29 } 30 31 func keyPairExists(t *testing.T, keyPair *Ec2Keypair) bool { 32 client := NewEc2Client(t, keyPair.Region) 33 34 input := ec2.DescribeKeyPairsInput{ 35 KeyNames: aws.StringSlice([]string{keyPair.Name}), 36 } 37 38 out, err := client.DescribeKeyPairs(&input) 39 if err != nil { 40 if strings.Contains(err.Error(), "InvalidKeyPair.NotFound") { 41 return false 42 } 43 t.Fatal(err) 44 } 45 46 return len(out.KeyPairs) == 1 47 } 48 49 func deleteKeyPair(t *testing.T, keyPair *Ec2Keypair) { 50 DeleteEC2KeyPair(t, keyPair) 51 assert.False(t, keyPairExists(t, keyPair)) 52 }