package resolver import ( "context" "errors" "testing" "time" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" bsltypes "edge-infra.dev/pkg/edge/api/bsl/types" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/api/graph/pagination" "edge-infra.dev/pkg/edge/api/middleware" "edge-infra.dev/pkg/edge/api/mocks" "edge-infra.dev/pkg/edge/api/types" "edge-infra.dev/pkg/lib/uuid" ) var ( defaultCursor = pagination.Pager{ Cursor: time.Now().Format(time.RFC3339), Offset: 0, Previous: false, } ) func TestGetActions(t *testing.T) { username := "username" clusterEdgeID := "clusterEdgeID" bannerID := "bannerID" batchID := "batchID" action := "tokenExchange" status := "SUCCESS" activityError := errors.New("") mock := gomock.NewController(t) activityService := mocks.NewMockActivityService(mock) activityService.EXPECT().GetActions(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return([]*model.Action{ { ActionID: uuid.New().UUID, Action: "bootstrapCluster", Time: "2023-06-29T22:36:30-04:00", Username: username, }, }, 0, nil).Times(1) activityService.EXPECT().GetActions(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(nil, 0, activityError).Times(1) bannerService := mocks.NewMockBannerService(mock) bannerService.EXPECT().GetBannerTenantInfo(gomock.Any(), gomock.Any()). Return(&model.Tenant{}, nil).Times(2) c := &types.Config{BSP: bsltypes.BSPConfig{OrganizationPrefix: "test_prefix-"}} r := &Resolver{ ActivityService: activityService, BannerService: bannerService, Config: c, } ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{ Username: "test-user", Organization: "organization", }) cursor := pagination.Encode(defaultCursor) count := 20 actions, err := r.Query().Actions(ctx, &username, &bannerID, &clusterEdgeID, &batchID, &action, &status, &cursor, &count) assert.NoError(t, err) assert.NotNil(t, actions) assert.Equal(t, actions.Edges[0].Username, username) actions, err = r.Query().Actions(ctx, &username, &bannerID, &clusterEdgeID, &batchID, &action, &status, &cursor, &count) assert.Nil(t, actions) assert.Error(t, err) }