cbd1d5f067
Add tests for queuing * startingtest * queuerunnertest * addedtestfuncs * testtests * passintegration * unittests
82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
package test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
"github.com/testcontainers/testcontainers-go"
|
|
)
|
|
|
|
type QueueContainerConfig struct {
|
|
ServiceName string
|
|
Queue *queueConfig
|
|
DB *ExternalDatabase
|
|
Network *testcontainers.DockerNetwork
|
|
}
|
|
|
|
func CreateQueueContainer(t *testing.T, ctx context.Context, config *QueueContainerConfig) func() {
|
|
queueCredentials, err := config.Queue.Credentials.Retrieve(ctx)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
_, cleanup := createContainer(t, ctx, &containerConfig{
|
|
Network: config.Network,
|
|
ServiceName: config.ServiceName,
|
|
DB: config.DB,
|
|
WaitForMsg: "Listening to queue",
|
|
Env: map[string]string{
|
|
"QUEUE_URL": config.Queue.URL,
|
|
"AWS_DEFAULT_REGION": config.Queue.Region,
|
|
"AWS_REGION": config.Queue.Region,
|
|
"AWS_ACCESS_KEY_ID": queueCredentials.AccessKeyID,
|
|
"AWS_SECRET_ACCESS_KEY": queueCredentials.SecretAccessKey,
|
|
"AWS_SESSION_TOKEN": queueCredentials.SessionToken,
|
|
"AWS_ENDPOINT_URL_SQS": config.Queue.Endpoint,
|
|
},
|
|
})
|
|
|
|
return cleanup
|
|
}
|
|
|
|
type queueConfig struct {
|
|
URL string
|
|
Region string
|
|
Endpoint string
|
|
Credentials aws.CredentialsProvider
|
|
}
|
|
|
|
func CreateQueueWithDependencies(t *testing.T, ctx context.Context, serviceName string) (*QueueConfig, func()) {
|
|
network, ncleanup := CreateNetwork(t, ctx)
|
|
|
|
dbconfig, dbcleanup := CreateDB(t, ctx, &CreateDatabaseConfig{
|
|
Network: network,
|
|
})
|
|
|
|
qCfg, qcleanup := CreateQueue(t, ctx, &CreateQueueConfig{
|
|
Network: network,
|
|
})
|
|
|
|
cfg := &queueConfig{
|
|
URL: qCfg.URL,
|
|
Region: qCfg.External.Region,
|
|
Endpoint: qCfg.External.Endpoint,
|
|
Credentials: qCfg.External.Credentials,
|
|
}
|
|
|
|
ccleanup := CreateQueueContainer(t, ctx, &QueueContainerConfig{
|
|
ServiceName: serviceName,
|
|
Queue: cfg,
|
|
DB: dbconfig.External,
|
|
Network: network,
|
|
})
|
|
|
|
return qCfg, func() {
|
|
ncleanup()
|
|
dbcleanup()
|
|
qcleanup()
|
|
ccleanup()
|
|
}
|
|
}
|