package resolver import ( "context" "testing" "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/middleware" "edge-infra.dev/pkg/edge/api/mocks" "edge-infra.dev/pkg/edge/api/types" "edge-infra.dev/pkg/edge/bsl" ) func TestAddSiteToStore(t *testing.T) { mock := gomock.NewController(t) storeService := mocks.NewMockStoreClusterService(mock) storeService.EXPECT().GetClusterByClusterEdgeID(gomock.Any(), "clusterEdgeID"). Return(types.Cluster{BannerEdgeID: "bannerEdgeID"}, nil).Times(1) storeService.EXPECT().UpdateStoreSiteID(gomock.Any(), gomock.Any(), gomock.Any()). Return(nil).Times(1) bannerService := mocks.NewMockBannerService(mock) bannerService.EXPECT().GetBannerByEdgeID(gomock.Any(), "bannerEdgeID"). Return(&model.Banner{}, nil).Times(1) bslSiteService := mocks.NewMockBSLSiteService(mock) bslSiteService.EXPECT().GetOrCreateSite(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(&bsl.BSLInfo{}, true, nil).Times(1) chariotService := mocks.NewMockChariotService(mock) c := &types.Config{BSP: bsltypes.BSPConfig{OrganizationPrefix: "test_prefix-"}} r := &Resolver{ StoreClusterService: storeService, BannerService: bannerService, BSLSiteService: bslSiteService, ChariotService: chariotService, Config: c, } siteID := "siteID" ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{ Username: "test-user", Organization: "organization", }) storeResponse, err := r.Mutation().AddSiteToStore(ctx, "clusterEdgeID", &siteID) assert.Equal(t, storeResponse.ClusterEdgeID, "clusterEdgeID") assert.NoError(t, err) } func TestAddSiteToStoreWithEU(t *testing.T) { mock := gomock.NewController(t) storeService := mocks.NewMockStoreClusterService(mock) storeService.EXPECT().GetClusterByClusterEdgeID(gomock.Any(), "clusterEdgeID"). Return(types.Cluster{BannerEdgeID: "bannerEdgeID"}, nil).Times(1) storeService.EXPECT().UpdateStoreSiteID(gomock.Any(), gomock.Any(), gomock.Any()). Return(nil).Times(1) bannerService := mocks.NewMockBannerService(mock) bannerService.EXPECT().GetBannerByEdgeID(gomock.Any(), "bannerEdgeID"). Return(&model.Banner{BannerType: "eu"}, nil).Times(1) bslSiteService := mocks.NewMockBSLSiteService(mock) bslSiteService.EXPECT().GetOrCreateSite(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()). Return(&bsl.BSLInfo{}, true, nil).Times(1) chariotService := mocks.NewMockChariotService(mock) c := &types.Config{BSP: bsltypes.BSPConfig{OrganizationPrefix: "test_prefix-"}} r := &Resolver{ StoreClusterService: storeService, BannerService: bannerService, BSLSiteService: bslSiteService, ChariotService: chariotService, Config: c, } siteID := "siteID" ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{ Username: "test-user", Organization: "organization", }) storeResponse, err := r.Mutation().AddSiteToStore(ctx, "clusterEdgeID", &siteID) assert.Equal(t, storeResponse.ClusterEdgeID, "clusterEdgeID") assert.NoError(t, err) } func TestUpdateClusterName(t *testing.T) { var ( clusterEdgeID = "clusterEdgeID" name = "cluster1" cluster = &model.Cluster{ClusterEdgeID: clusterEdgeID, Name: name} ) mock := gomock.NewController(t) storeService := mocks.NewMockStoreClusterService(mock) storeService.EXPECT().UpdateStoreName(gomock.Any(), clusterEdgeID, name). Return(nil).Times(1) storeService.EXPECT().GetCluster(gomock.Any(), clusterEdgeID). Return(cluster, nil).Times(1) r := &Resolver{ StoreClusterService: storeService, } ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{ Username: "test-user", Organization: "organization", }) storeResponse, err := r.Mutation().UpdateClusterName(ctx, clusterEdgeID, name) assert.Equal(t, storeResponse.Name, name) assert.NoError(t, err) }