kubelatte-ce
Форк от sbertech/kubelatte-ce
203 строки · 5.3 Кб
1package creation2
3import (4"context"5"fmt"6"github.com/Masterminds/sprig/v3"7"github.com/stretchr/testify/assert"8"github.com/stretchr/testify/mock"9v1alpha12 "gitverse.ru/ktrntrsv/kubelatte-ce/pkg/api/v1alpha1"10"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/observability/logger/lib"11"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/operator/controllers/clientset"12"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/operator/controllers/clientset/mocks"13"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/operator/utils"14"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/storage"15"gitverse.ru/ktrntrsv/kubelatte-ce/pkg/util/templates"16"go.uber.org/zap"17v1 "k8s.io/apimachinery/pkg/apis/meta/v1"18"strings"19"testing"20"text/template"21)
22
23func TestRenderController(t *testing.T) {24lib.ZapLogger = zap.NewNop()25
26templateClient := mocks.NewTemplateInterface(t)27templateClient.On("List", mock.Anything, mock.Anything).Return(&v1alpha12.TemplateList{28Items: []v1alpha12.Template{29{30ObjectMeta: v1.ObjectMeta{31Name: "template",32Namespace: "test",33},34Spec: v1alpha12.TemplateSpec{35Kind: "Pod",36ApiVersion: "v1",37Data: "metadata:\n name: pod\nspec:\n abc: test",38},39},40},41}, nil).Maybe()42triggerClient := mocks.NewTriggerInterface(t)43triggerClient.On("List", mock.Anything, mock.Anything).Return(&v1alpha12.TriggerList{44Items: []v1alpha12.Trigger{45{46ObjectMeta: v1.ObjectMeta{47Name: "trigger",48Namespace: "test",49},50Spec: v1alpha12.TriggerSpec{51CreationConfigs: []v1alpha12.CreationConfig{52{53Name: "creation",54LabelSelector: v1.LabelSelector{55MatchExpressions: []v1.LabelSelectorRequirement{56{57Key: "test",58Operator: "In",59Values: []string{"test"},60},61},62},63AnnotationNamespace: "test",64AnnotationTrigger: "test",65TemplateRefs: []string{"test/template"},66},67},68},69},70},71}, nil).Maybe()72
73ti := v1alpha12.TriggerInstance{74Status: v1alpha12.TriggerInstanceStatus{75ResourceStatus: []v1alpha12.ResourceStatus{76{77Name: "pod",78Kind: "Pod",79ApiVersion: "v1",80Message: "REMOVED",81Phase: "",82Status: "REMOVED",83},84},85},86}87
88scopeClient := mocks.NewScopeInterface(t)89triggerInstanceClient := mocks.NewTriggerInstanceInterface(t)90triggerInstanceClient.On("Get", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(&ti, nil).Maybe()91triggerInstanceClient.On("updateStatus", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil, nil).Maybe()92
93clt := clientset.V1Alpha1Client{94TriggerClient: triggerClient,95TemplateClient: templateClient,96ScopeClient: scopeClient,97TriggerInstanceClient: triggerInstanceClient,98}99
100utils.Cl = &clt101
102r := RenderController{}103InitTestStorage()104
105t.Run("Check getRenders", func(t *testing.T) {106ti2 := v1alpha12.TriggerInstance{107ObjectMeta: v1.ObjectMeta{108Name: "test",109Namespace: "test",110Annotations: map[string]string{111"test/test": "true",112},113},114Status: v1alpha12.TriggerInstanceStatus{},115}116renderItems := r.GetRenders(context.Background(), &ti2)117assert.Equal(t, 1, len(renderItems))118})119}
120
121func InitTestStorage() {122var storageController = &storage.StorageController{}123storageController.Start(false, false)124storageController.UpdateScope(v1alpha12.Scope{125ObjectMeta: v1.ObjectMeta{126Name: "TestScope",127},128Spec: v1alpha12.ScopeSpec{129Type: "mutation",130Items: []v1alpha12.Item{131{132Name: "TestScopeItem",133},134},135},136})137storageController.UpdateTrigger(&v1alpha12.Trigger{138ObjectMeta: v1.ObjectMeta{139Name: "trigger",140Namespace: "test",141},142Spec: v1alpha12.TriggerSpec{143CreationConfigs: []v1alpha12.CreationConfig{144{145Name: "creation",146LabelSelector: v1.LabelSelector{147MatchExpressions: []v1.LabelSelectorRequirement{148{149Key: "test",150Operator: "In",151Values: []string{"test"},152},153},154},155AnnotationNamespace: "test",156AnnotationTrigger: "test",157TemplateRefs: []string{"test/template"},158},159},160},161})162storageController.UpdateTemplate(&v1alpha12.Template{163ObjectMeta: v1.ObjectMeta{164Name: "template",165Namespace: "test",166},167Spec: v1alpha12.TemplateSpec{168Kind: "Pod",169ApiVersion: "v1",170Data: "metadata:\n name: pod\nspec:\n abc: test",171},172})173storage.Storage = storageController174}
175
176func TestTemplateEngine(t *testing.T) {177var Data = "{{% .spec.dataObj.spec.host %}}"178var tiObject = map[string]interface{}{179"spec": map[string]interface{}{180"dataObj": map[string]interface{}{181"spec": map[string]interface{}{182"host": "aaaaaaaaaa",183},184},185},186}187templateEngine := template.New("common").188Delims("{{%", "%}}").189Funcs(template.FuncMap{190"fromYaml": templates.FromYAML,191}).192Funcs(sprig.TxtFuncMap())193temp, err := templateEngine.New("test").Parse(Data)194if err != nil {195_ = fmt.Errorf(fmt.Sprintf("TestTemplateEngine: ReloadTemplates failed %s", err))196}197var tempBuffer strings.Builder198err = temp.Execute(&tempBuffer, tiObject)199if err != nil {200_ = fmt.Errorf(fmt.Sprintf("RenderController: getRenders failed %s", err))201}202fmt.Println(tempBuffer.String())203}
204