basicintegrationsetup

This commit is contained in:
Michael McGuinness
2024-12-23 12:56:47 +00:00
parent 339ce185ad
commit dd7b3ef2fd
8 changed files with 134 additions and 72 deletions
+42
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"strconv"
"testing"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config"
@@ -12,6 +13,7 @@ import (
"github.com/aws/aws-sdk-go-v2/service/sqs"
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
"github.com/docker/go-connections/nat"
"github.com/stretchr/testify/assert"
"github.com/testcontainers/testcontainers-go"
"github.com/testcontainers/testcontainers-go/network"
"github.com/testcontainers/testcontainers-go/wait"
@@ -236,3 +238,43 @@ func sendMessage(t *testing.T, ctx context.Context, queue *sqs.Client, message m
t.Fatalf("Failed to send message: %v", err)
}
}
func assertMessageWait(t *testing.T, ctx context.Context, queue *queue, msgType string) {
time.Sleep(time.Second)
result, err := queue.Client.ReceiveMessage(ctx, &sqs.ReceiveMessageInput{
QueueUrl: &queue.Config.URL,
MaxNumberOfMessages: 1,
WaitTimeSeconds: 5,
VisibilityTimeout: 2,
MessageAttributeNames: []string{
"type",
},
})
assert.Nil(t, err)
for _, message := range result.Messages {
assert.Equal(t, msgType, *message.MessageAttributes["type"].StringValue)
}
}
func createDependencies(t *testing.T, ctx context.Context) (*queue, func()) {
network := createNetwork(t, ctx)
dbconfig, dbContainer := createDB(t, ctx, network)
queue := createQueue(t, ctx, network)
container := createContainer(t, ctx, containerConfig{
Queue: *queue.Config,
DB: dbconfig,
Network: network,
})
return queue, func() {
testcontainers.CleanupNetwork(t, network)
dbContainer.Terminate(ctx)
(*queue.Container).Terminate(ctx)
container.Terminate(ctx)
}
}
-54
View File
@@ -1,54 +0,0 @@
package queue_test
import (
"context"
"testing"
"time"
"github.com/aws/aws-sdk-go-v2/service/sqs"
"github.com/stretchr/testify/assert"
"github.com/testcontainers/testcontainers-go"
)
func TestName(t *testing.T) {
ctx := context.Background()
network := createNetwork(t, ctx)
defer testcontainers.CleanupNetwork(t, network)
dbconfig, dbContainer := createDB(t, ctx, network)
defer dbContainer.Terminate(ctx)
queue := createQueue(t, ctx, network)
defer (*queue.Container).Terminate(ctx)
container := createContainer(t, ctx, containerConfig{
Queue: *queue.Config,
DB: dbconfig,
Network: network,
})
defer container.Terminate(ctx)
sendMessage(t, ctx, queue.Client, message{
URL: queue.Config.URL,
Type: "CREATE_NAME",
Body: "{\"name\":\"Doczy.ai\"}",
})
time.Sleep(time.Second)
result, err := queue.Client.ReceiveMessage(ctx, &sqs.ReceiveMessageInput{
QueueUrl: &queue.Config.URL,
MaxNumberOfMessages: 1,
WaitTimeSeconds: 5,
VisibilityTimeout: 2,
MessageAttributeNames: []string{
"type",
},
})
assert.Nil(t, err)
for _, message := range result.Messages {
assert.Equal(t, "CREATE_NAME_SUCCESS", *message.MessageAttributes["type"].StringValue)
}
}
+36
View File
@@ -0,0 +1,36 @@
package queue_test
import (
"context"
"encoding/json"
"gotemplate/internal/document"
"testing"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
)
func TestName(t *testing.T) {
ctx := context.Background()
queue, cleanup := createDependencies(t, ctx)
defer cleanup()
document := document.Document{
ID: uuid.New(),
JobID: uuid.New(),
Name: "document_name",
CleanVersion: int32(1),
TextVersion: int32(1),
}
docJson, err := json.Marshal(document)
assert.Nil(t, err)
sendMessage(t, ctx, queue.Client, message{
URL: queue.Config.URL,
Type: "DOCTEXT",
Body: string(docJson),
})
assertMessageWait(t, ctx, queue, "DOCQUERY")
}