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  }