package test import ( "context" "regexp" "testing" "queryorchestration/internal/serviceconfig" "queryorchestration/internal/serviceconfig/queue" awsc "queryorchestration/internal/serviceconfig/aws" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/sqs/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) 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) require.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) require.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") err = cfg.SendToQueue(ctx, &queue.SendParams{ QueueURL: url, Body: "body", }) require.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) require.NoError(t, err) url := CreateQueue(t, ctx, cfg, "myname") err = cfg.SendToQueue(ctx, &queue.SendParams{ QueueURL: url, Body: "body", }) require.NoError(t, err) AssertMessageBody(t, ctx, cfg, url, regexp.MustCompile("\"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) require.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), }, }, }) require.NoError(t, err) AssertMessageAttr(t, ctx, cfg, url, name, regexp.MustCompile(value)) } func TestGetQueueURL(t *testing.T) { cfg := &awsc.AWSConfig{ AWSRegion: "us-east-1", } assert.Equal(t, "http://localstack:4566/queue/us-east-1/000000000000/docInitRunner", GetQueueURL(cfg, DocInitRunnerName)) } func TestGetQueueARN(t *testing.T) { cfg := &awsc.AWSConfig{ AWSRegion: "us-east-1", } assert.Equal(t, "arn:aws:sqs:us-east-1:000000000000:docInitRunner", GetQueueArn(cfg, DocInitRunnerName)) }