...

Source file src/edge-infra.dev/pkg/edge/api/graph/resolver/helm_queries.resolvers_test.go

Documentation: edge-infra.dev/pkg/edge/api/graph/resolver

     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