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{}, }) }