1 package resolver
2
3 import (
4 "context"
5 "testing"
6
7 "github.com/golang/mock/gomock"
8 "github.com/stretchr/testify/assert"
9
10 bsltypes "edge-infra.dev/pkg/edge/api/bsl/types"
11 "edge-infra.dev/pkg/edge/api/graph/model"
12 seeding "edge-infra.dev/pkg/edge/api/graph/test"
13 "edge-infra.dev/pkg/edge/api/middleware"
14 "edge-infra.dev/pkg/edge/api/mocks"
15 "edge-infra.dev/pkg/edge/api/types"
16 "edge-infra.dev/pkg/lib/uuid"
17 )
18
19 func TestCreateHelmRelease(t *testing.T) {
20 mock := gomock.NewController(t)
21 helmService := mocks.NewMockHelmService(mock)
22 bannerService := mocks.NewMockBannerService(mock)
23 clusterID := uuid.New().UUID
24
25 mockCreateHelmReleasePayload := model.HelmReleasePayload{
26 Name: "pod-info",
27 Secret: "platform-read",
28 HelmRepository: "ncr-edge",
29 HelmChart: "pod-info",
30 Version: "1.0.0",
31 Namespace: "test-namespace",
32 ClusterEdgeID: &clusterID,
33 }
34
35 cluster := seeding.Clusters[0].ConvertToModel()
36 storeClusterService := mocks.NewMockStoreClusterService(mock)
37 storeClusterService.EXPECT().GetCluster(gomock.Any(), gomock.Any()).Return(&cluster, nil).AnyTimes()
38
39 helmService.EXPECT().ValidateHelmConfigAgainstSchema(gomock.Any(), mockCreateHelmReleasePayload.ConfigValues, gomock.Any(), mockCreateHelmReleasePayload.HelmChart, mockCreateHelmReleasePayload.Version, mockCreateHelmReleasePayload.Secret).
40 Return(true, nil).Times(1)
41 helmService.EXPECT().
42 CreateHelmReleaseSQL(gomock.Any(), gomock.Any(), gomock.Any()).
43 Return(nil).Times(1)
44
45 c := &types.Config{BSP: bsltypes.BSPConfig{OrganizationPrefix: "test_prefix-"}}
46 r := &Resolver{
47 HelmService: helmService,
48 StoreClusterService: storeClusterService,
49 BannerService: bannerService,
50 Config: c,
51 }
52
53 ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{
54 Username: "test-user",
55 Organization: "organization",
56 })
57
58 helmRelease, err := r.Mutation().CreateHelmRelease(ctx, mockCreateHelmReleasePayload)
59
60 assert.NoError(t, err)
61 assert.NotNil(t, helmRelease)
62 assert.True(t, helmRelease)
63 }
64
65 func TestUpdateHelmRelease(t *testing.T) {
66 mock := gomock.NewController(t)
67 helmService := mocks.NewMockHelmService(mock)
68 bannerService := mocks.NewMockBannerService(mock)
69 configValues := ""
70 projectID := uuid.New().UUID
71 helmWorkload := model.HelmWorkload{
72 HelmEdgeID: uuid.New().UUID,
73 Name: "test-update-helm",
74 HelmRepository: "ncr-edge",
75 HelmChart: "pod-info",
76 HelmChartVersion: "1.0.0",
77 HelmRepoSecret: "platform-read",
78 Namespace: "test-namespace",
79 ConfigValues: &configValues,
80 BannerEdgeID: uuid.New().UUID,
81 }
82
83 helmService.EXPECT().GetHelmWorkloadSQL(gomock.Any(), helmWorkload.HelmEdgeID).Return(&helmWorkload, nil).Times(1)
84 bannerService.EXPECT().GetBannerProjectID(gomock.Any(), helmWorkload.BannerEdgeID).Return(projectID, nil).Times(1)
85 helmService.EXPECT().ValidateHelmConfigAgainstSchema(gomock.Any(), &configValues, projectID, helmWorkload.HelmChart, helmWorkload.HelmChartVersion, helmWorkload.HelmRepoSecret).
86 Return(true, nil).Times(1)
87 helmService.EXPECT().UpdateHelmReleaseSQL(gomock.Any(), helmWorkload.HelmEdgeID, helmWorkload.HelmChartVersion, helmWorkload.ConfigValues, nil).Return(nil).Times(1)
88
89 c := &types.Config{BSP: bsltypes.BSPConfig{OrganizationPrefix: "test_prefix-"}}
90 r := &Resolver{
91 HelmService: helmService,
92 BannerService: bannerService,
93 Config: c,
94 }
95
96 ctx := middleware.NewContext(context.Background(), &bsltypes.AuthUser{
97 Username: "test-user",
98 Organization: "organization",
99 })
100
101 helmRelease, err := r.Mutation().UpdateHelmRelease(ctx, &helmWorkload.HelmEdgeID, nil, nil, nil, nil, nil, nil, nil)
102
103 assert.NoError(t, err)
104 assert.NotNil(t, helmRelease)
105 assert.True(t, helmRelease)
106 }
107
View as plain text