Files
query-orchestration/api/queryAPI/collector_test.go
T
Michael McGuinness 61d12bf8df Merged in feature/checkbox (pull request #145)
Checkbox Primary Edge Cases

* hascheckboxlogic

* gen

* preppinggen

* exploringcheckbox

* removeunselected

* tests

* failingtest

* failintests

* nomockqueryapi

* db

* name

* nocontainer

* deleterow

* cnc

* extradocsandupdatetextracts

* moretables

* appndedtables

* baseversion
2025-05-20 12:47:22 +00:00

110 lines
2.7 KiB
Go

package queryapi_test
import (
"fmt"
"net/http"
"testing"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/collector"
collectorset "queryorchestration/internal/collector/set"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/test"
queuemock "queryorchestration/mocks/queue"
"github.com/aws/aws-sdk-go-v2/service/sqs"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)
func TestSetCollector(t *testing.T) {
t.Parallel()
cfg := &ClientConfig{}
cfg.ClientSyncURL = "example"
net := test.GetNetwork(t)
test.CreateDB(t, cfg, net, &test.CreateDatabaseConfig{})
mockSQS := queuemock.NewMockSQSClient(t)
cfg.QueueClient = mockSQS
id := "clientid"
err := cfg.GetDBQueries().CreateClient(t.Context(), &repository.CreateClientParams{
Clientid: id,
Name: "client_name",
})
require.NoError(t, err)
queryId, err := cfg.GetDBQueries().CreateQuery(t.Context(), repository.QuerytypeContextFull)
require.NoError(t, err)
av := int32(1)
cv := int64(1)
body := queryapi.CollectorSet{
ActiveVersion: &av,
MinimumCleanerVersion: &cv,
Fields: &[]queryapi.CollectorField{
{
Name: "a",
QueryId: queryId,
},
},
}
ctx, rec := createContextWithBody(t, body)
cons := queryapi.NewControllers(&queryapi.Services{
CollectorSet: collectorset.New(cfg, &collectorset.Services{
Collector: collector.New(cfg),
}),
})
mockSQS.EXPECT().
SendMessage(
mock.Anything,
mock.MatchedBy(func(in *sqs.SendMessageInput) bool {
return *in.QueueUrl == cfg.GetClientSyncURL() && *in.MessageBody == fmt.Sprintf("{\"id\":\"%s\"}", id)
}),
mock.Anything,
).
Return(&sqs.SendMessageOutput{}, nil)
err = cons.SetCollectorByClientId(ctx, id)
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
assert.Empty(t, rec.Body.String())
}
func TestGetCollectorByClientId(t *testing.T) {
t.Parallel()
cfg := &serviceconfig.BaseConfig{}
net := test.GetNetwork(t)
test.CreateDB(t, cfg, net, &test.CreateDatabaseConfig{})
cons := queryapi.NewControllers(&queryapi.Services{
Collector: collector.New(cfg),
})
id := "clientid"
err := cfg.GetDBQueries().CreateClient(t.Context(), &repository.CreateClientParams{
Clientid: id,
Name: "client_name",
})
require.NoError(t, err)
ctx, rec := createContext(t)
err = cons.GetCollectorByClientId(ctx, id)
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
assertBody(t, rec, queryapi.Collector{
ClientId: id,
MinimumCleanerVersion: 0,
MinimumTextVersion: 0,
ActiveVersion: 0,
LatestVersion: 0,
Fields: []queryapi.CollectorField{},
})
}