github.com/kubeshop/testkube@v1.17.23/pkg/crd/crd_test.go (about) 1 package crd 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 9 ) 10 11 func TestGenerateYAML(t *testing.T) { 12 13 t.Run("generate single CRD yaml", func(t *testing.T) { 14 // given 15 expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n" 16 webhooks := []testkube.Webhook{ 17 { 18 Name: "name1", 19 Namespace: "namespace1", 20 Uri: "http://localhost", 21 Events: []testkube.EventType{*testkube.EventStartTest}, 22 Selector: "app=backend", 23 Labels: map[string]string{"key1": "value1"}, 24 PayloadObjectField: "text", 25 PayloadTemplate: "{{ .Id }}", 26 Headers: map[string]string{"Content-Type": "appication/xml"}, 27 PayloadTemplateReference: "ref", 28 }, 29 } 30 31 // when 32 result, err := GenerateYAML[testkube.Webhook](TemplateWebhook, webhooks) 33 34 // then 35 assert.NoError(t, err) 36 assert.Equal(t, expected, result) 37 }) 38 39 t.Run("generate multiple CRDs yaml", func(t *testing.T) { 40 // given 41 expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n\n---\napiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name2\n namespace: namespace2\n labels:\n key2: value2\nspec:\n events:\n - end-test-success\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplate: {{ .Id }}\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n" 42 webhooks := []testkube.Webhook{ 43 { 44 Name: "name1", 45 Namespace: "namespace1", 46 Uri: "http://localhost", 47 Events: []testkube.EventType{*testkube.EventStartTest}, 48 Selector: "app=backend", 49 Labels: map[string]string{"key1": "value1"}, 50 PayloadObjectField: "text", 51 PayloadTemplate: "{{ .Id }}", 52 Headers: map[string]string{"Content-Type": "appication/xml"}, 53 PayloadTemplateReference: "ref", 54 }, 55 { 56 Name: "name2", 57 Namespace: "namespace2", 58 Uri: "http://localhost", 59 Events: []testkube.EventType{*testkube.EventEndTestSuccess}, 60 Selector: "app=backend", 61 Labels: map[string]string{"key2": "value2"}, 62 PayloadObjectField: "text", 63 PayloadTemplate: "{{ .Id }}", 64 Headers: map[string]string{"Content-Type": "appication/xml"}, 65 PayloadTemplateReference: "ref", 66 }, 67 } 68 69 // when 70 result, err := GenerateYAML[testkube.Webhook](TemplateWebhook, webhooks) 71 72 // then 73 assert.NoError(t, err) 74 assert.Equal(t, expected, result) 75 }) 76 t.Run("generate executor CRD yaml", func(t *testing.T) { 77 // given 78 expected := "apiVersion: executor.testkube.io/v1\nkind: Executor\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\nspec:\n types:\n - custom-curl-container/test\n executor_type: container\n image: docker.io/curlimages/curl:latest\n args:\n - -v\n - test\n command:\n - curl\n imagePullSecrets:\n - name: secret-name\n features:\n - artifacts\n content_types:\n - git-file\n - git-dir\n meta:\n iconURI: http://mydomain.com/icon.jpg\n docsURI: http://mydomain.com/docs\n tooltips:\n name: please enter executor name\n useDataDirAsWorkingDir: true\n" 79 executors := []testkube.ExecutorUpsertRequest{ 80 { 81 Namespace: "namespace1", 82 Name: "name1", 83 ExecutorType: "container", 84 Image: "docker.io/curlimages/curl:latest", 85 ImagePullSecrets: []testkube.LocalObjectReference{{ 86 Name: "secret-name", 87 }}, 88 Command: []string{"curl"}, 89 Args: []string{"-v", "test"}, 90 Types: []string{"custom-curl-container/test"}, 91 Labels: map[string]string{ 92 "key1": "value1", 93 }, 94 Features: []string{"artifacts"}, 95 ContentTypes: []string{"git-file", "git-dir"}, 96 Meta: &testkube.ExecutorMeta{ 97 IconURI: "http://mydomain.com/icon.jpg", 98 DocsURI: "http://mydomain.com/docs", 99 Tooltips: map[string]string{ 100 "name": "please enter executor name", 101 }, 102 }, 103 UseDataDirAsWorkingDir: true, 104 }, 105 } 106 107 // when 108 result, err := GenerateYAML[testkube.ExecutorUpsertRequest](TemplateExecutor, executors) 109 110 // then 111 assert.NoError(t, err) 112 assert.Equal(t, expected, result) 113 }) 114 t.Run("generate test CRD yaml", func(t *testing.T) { 115 // given 116 expected := "apiVersion: tests.testkube.io/v3\nkind: Test\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\nspec:\n executionRequest:\n name: execution-name\n args:\n - -v\n - test\n image: docker.io/curlimages/curl:latest\n command:\n - curl\n imagePullSecrets:\n - name: secret-name\n negativeTest: true\n activeDeadlineSeconds: 10\n" 117 tests := []testkube.TestUpsertRequest{ 118 { 119 Name: "name1", 120 Namespace: "namespace1", 121 Labels: map[string]string{ 122 "key1": "value1", 123 }, 124 ExecutionRequest: &testkube.ExecutionRequest{ 125 Name: "execution-name", 126 Image: "docker.io/curlimages/curl:latest", 127 ImagePullSecrets: []testkube.LocalObjectReference{{ 128 Name: "secret-name", 129 }}, 130 Command: []string{"curl"}, 131 Args: []string{"-v", "test"}, 132 ActiveDeadlineSeconds: 10, 133 NegativeTest: true, 134 }, 135 }, 136 } 137 138 // when 139 result, err := GenerateYAML(TemplateTest, tests) 140 141 // then 142 assert.NoError(t, err) 143 assert.Equal(t, expected, result) 144 }) 145 146 }