github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/aws/sqs_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/sqs" 10 "github.com/gruntwork-io/terratest/modules/random" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestSqsQueueMethods(t *testing.T) { 15 t.Parallel() 16 17 region := GetRandomStableRegion(t, nil, nil) 18 uniqueID := random.UniqueId() 19 namePrefix := fmt.Sprintf("sqs-queue-test-%s", uniqueID) 20 21 url := CreateRandomQueue(t, region, namePrefix) 22 defer deleteQueue(t, region, url) 23 24 assert.True(t, queueExists(t, region, url)) 25 26 message := fmt.Sprintf("test-message-%s", uniqueID) 27 timeoutSec := 20 28 29 SendMessageToQueue(t, region, url, message) 30 31 firstResponse := WaitForQueueMessage(t, region, url, timeoutSec) 32 assert.NoError(t, firstResponse.Error) 33 assert.Equal(t, message, firstResponse.MessageBody) 34 35 DeleteMessageFromQueue(t, region, url, firstResponse.ReceiptHandle) 36 37 secondResponse := WaitForQueueMessage(t, region, url, timeoutSec) 38 assert.Error(t, secondResponse.Error, ReceiveMessageTimeout{QueueUrl: url, TimeoutSec: timeoutSec}) 39 } 40 41 func TestFifoSqsQueueMethods(t *testing.T) { 42 t.Parallel() 43 44 region := GetRandomStableRegion(t, nil, nil) 45 uniqueID := random.UniqueId() 46 namePrefix := fmt.Sprintf("sqs-queue-test-%s", uniqueID) 47 fifoMessageGroupID := "g1" 48 49 url := CreateRandomFifoQueue(t, region, namePrefix) 50 defer deleteQueue(t, region, url) 51 52 assert.True(t, queueExists(t, region, url)) 53 54 message := fmt.Sprintf("test-message-%s", uniqueID) 55 timeoutSec := 20 56 57 SendMessageFifoToQueue(t, region, url, message, fifoMessageGroupID) 58 59 firstResponse := WaitForQueueMessage(t, region, url, timeoutSec) 60 assert.NoError(t, firstResponse.Error) 61 assert.Equal(t, message, firstResponse.MessageBody) 62 63 DeleteMessageFromQueue(t, region, url, firstResponse.ReceiptHandle) 64 65 secondResponse := WaitForQueueMessage(t, region, url, timeoutSec) 66 assert.Error(t, secondResponse.Error, ReceiveMessageTimeout{QueueUrl: url, TimeoutSec: timeoutSec}) 67 } 68 69 func queueExists(t *testing.T, region string, url string) bool { 70 sqsClient := NewSqsClient(t, region) 71 72 input := sqs.GetQueueAttributesInput{QueueUrl: aws.String(url)} 73 74 if _, err := sqsClient.GetQueueAttributes(&input); err != nil { 75 if strings.Contains(err.Error(), "NonExistentQueue") { 76 return false 77 } 78 t.Fatal(err) 79 } 80 81 return true 82 } 83 84 func deleteQueue(t *testing.T, region string, url string) { 85 DeleteQueue(t, region, url) 86 assert.False(t, queueExists(t, region, url)) 87 }