Files
query-orchestration/internal/test/api.go
T
Michael McGuinness 555b6d420b Merged in feature/docresult (pull request #105)
Document Result Endpoint

* testing

* cleantesting

* progress

* query

* lint

* readme

* dockerclient

* api

* passtest

* tests

* test
2025-03-17 18:14:15 +00:00

69 lines
1.4 KiB
Go

package test
import (
"context"
"fmt"
"testing"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/serviceconfig"
"github.com/docker/go-connections/nat"
"github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go"
)
type APIName = string
const (
QueryAPIName APIName = queryapi.Name
)
type API struct {
Name APIName
DownstreamQueues []RunnerName
}
type APIConfig struct {
API API
Cfg serviceconfig.ConfigProvider
Network *testcontainers.DockerNetwork
}
func CreateAPI(t testing.TB, ctx context.Context, config *APIConfig) (*Container, func()) {
port, err := nat.NewPort("tcp", "8080")
require.NoError(t, err)
container, cleanup := createContainer(t, ctx, &containerConfig{
Cfg: config.Cfg,
Name: config.API.Name,
DownstreamQueues: config.API.DownstreamQueues,
Network: config.Network,
WaitForMsg: "⇨ http server started on [::]:8080",
})
host, err := container.Host(ctx)
require.NoError(t, err)
mappedPort, err := container.MappedPort(ctx, port)
require.NoError(t, err)
address := fmt.Sprintf("http://%s:%s", host, mappedPort.Port())
return &Container{
URI: address,
Container: container,
}, cleanup
}
var QueryAPI = API{
Name: QueryAPIName,
DownstreamQueues: []RunnerName{
ClientSyncRunnerName,
QueryVersionSyncRunnerName,
},
}
var apis = []API{
QueryAPI,
}