ee776d2681
Single Mock Server * mockserver * mockserver * reqs * mockserver * slowrunner * someoptimisedqueries * passedfullsuite * passedfullsuite
99 lines
2.7 KiB
Go
99 lines
2.7 KiB
Go
package queryapitest
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
"net/http"
|
|
"testing"
|
|
"time"
|
|
|
|
queryapi "queryorchestration/pkg/queryAPI"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/oapi-codegen/runtime/types"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func CreateClientWithSync(t testing.TB, client queryapi.ClientWithResponsesInterface) queryapi.ClientID {
|
|
t.Helper()
|
|
|
|
clientCreateRes, err := client.CreateClientWithResponse(t.Context(), queryapi.ClientCreate{
|
|
Name: "example_name",
|
|
Id: "ID",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
canSync := true
|
|
_, err = client.UpdateClientWithResponse(t.Context(), clientCreateRes.JSON201.Id, queryapi.ClientUpdate{
|
|
CanSync: &canSync,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
return clientCreateRes.JSON201.Id
|
|
}
|
|
|
|
func SetQueryForClient(t testing.TB, client queryapi.ClientWithResponsesInterface, clientId queryapi.ClientID, queryId uuid.UUID) {
|
|
t.Helper()
|
|
|
|
newActiveVersion := int32(1)
|
|
_, err := client.SetCollectorByClientIdWithResponse(t.Context(), clientId, queryapi.CollectorSet{
|
|
ActiveVersion: &newActiveVersion,
|
|
Fields: &[]queryapi.CollectorField{
|
|
{
|
|
Name: "JSON_QUERY",
|
|
QueryId: queryId,
|
|
},
|
|
},
|
|
})
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func WaitForClientStatus(t testing.TB, ctx context.Context, service queryapi.ClientWithResponsesInterface, id string, status queryapi.ClientStatus) {
|
|
t.Helper()
|
|
|
|
timeout := time.After(60 * time.Second)
|
|
ticker := time.NewTicker(100 * time.Millisecond)
|
|
defer ticker.Stop()
|
|
|
|
for {
|
|
select {
|
|
case <-timeout:
|
|
require.NoError(t, fmt.Errorf("Timeout waiting for client status to become %s", status))
|
|
case <-ticker.C:
|
|
jRes, err := service.GetStatusByClientIdWithResponse(ctx, id)
|
|
if err != nil {
|
|
slog.Error("error getting status", "error", err.Error())
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
if jRes.JSON200.Status == status {
|
|
assert.Equal(t, status, jRes.JSON200.Status)
|
|
slog.Info("returned client status", "status", jRes.JSON200.Status)
|
|
return
|
|
}
|
|
|
|
slog.Error("unexpected status", "status", jRes.JSON200.Status)
|
|
}
|
|
}
|
|
}
|
|
|
|
func CreateDependentQueries(t testing.TB, client *queryapi.ClientWithResponses) (uuid.UUID, uuid.UUID) {
|
|
contextQueryRes, err := client.CreateQueryWithResponse(t.Context(), queryapi.QueryCreate{
|
|
Type: queryapi.CONTEXTFULL,
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, http.StatusCreated, contextQueryRes.StatusCode())
|
|
jcfg := `{"path":"keyone"}`
|
|
jsonQueryRes, err := client.CreateQueryWithResponse(t.Context(), queryapi.QueryCreate{
|
|
Type: queryapi.JSONEXTRACTOR,
|
|
Config: &jcfg,
|
|
RequiredQueries: &[]types.UUID{contextQueryRes.JSON201.Id},
|
|
})
|
|
require.NoError(t, err)
|
|
require.Equal(t, http.StatusCreated, jsonQueryRes.StatusCode())
|
|
|
|
return contextQueryRes.JSON201.Id, jsonQueryRes.JSON201.Id
|
|
}
|