package test import ( "context" "queryorchestration/internal/serviceconfig" "queryorchestration/internal/serviceconfig/queue" "testing" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/sqs/types" "github.com/stretchr/testify/assert" ) func TestCreateQueue(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} SetCfgProvider(t, cfg) _, cleanup := CreateAWSContainer(t, ctx, &CreateAWSConfig{ Cfg: cfg, }) defer cleanup() err := cfg.SetQueueClient(ctx) assert.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") assert.Equal(t, "http://localstack:4566/queue/us-east-1/000000000000/myname", url) } func TestAssertMessageWait(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} SetCfgProvider(t, cfg) _, cleanup := CreateAWSContainer(t, ctx, &CreateAWSConfig{ Cfg: cfg, }) defer cleanup() err := cfg.SetQueueClient(ctx) assert.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") err = cfg.SendToQueue(ctx, &queue.SendParams{ QueueURL: url, Body: "body", }) assert.NoError(t, err) msg := AssertMessage(t, ctx, cfg, &queue.ReceiveParams{ QueueURL: url, }) assert.NotNil(t, msg) } func TestAssertMessageBodyWait(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} SetCfgProvider(t, cfg) _, cleanup := CreateAWSContainer(t, ctx, &CreateAWSConfig{ Cfg: cfg, }) defer cleanup() err := cfg.SetQueueClient(ctx) assert.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") err = cfg.SendToQueue(ctx, &queue.SendParams{ QueueURL: url, Body: "body", }) assert.NoError(t, err) AssertMessageBody(t, ctx, cfg, url, "\"body\"") } func TestAssertMessageAttrWait(t *testing.T) { if testing.Short() { t.Skip("Skipping long test in short mode") } ctx := context.Background() cfg := &serviceconfig.BaseConfig{} SetCfgProvider(t, cfg) _, cleanup := CreateAWSContainer(t, ctx, &CreateAWSConfig{ Cfg: cfg, }) defer cleanup() err := cfg.SetQueueClient(ctx) assert.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") name := "name" value := "value" err = cfg.SendToQueue(ctx, &queue.SendParams{ QueueURL: url, Body: "body", Attributes: map[string]types.MessageAttributeValue{ name: { DataType: aws.String("String"), StringValue: aws.String(value), }, }, }) assert.NoError(t, err) AssertMessageAttr(t, ctx, cfg, url, name, value) }