Skip to content

Commit b29162e

Browse files
authored
fix: [TKC-3468] print webhook payload yaml text (#6321)
* fix: print xml text Signed-off-by: Vladislav Sukhin <[email protected]> * fix: unit test Signed-off-by: Vladislav Sukhin <[email protected]> * fix: remove type Signed-off-by: Vladislav Sukhin <[email protected]> * fix: fmt template Signed-off-by: Vladislav Sukhin <[email protected]> --------- Signed-off-by: Vladislav Sukhin <[email protected]>
1 parent bb8f95c commit b29162e

6 files changed

+26
-10
lines changed

pkg/api/v1/testkube/model_webhook_create_request_extended.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import "fmt"
44

55
func (w *WebhookCreateRequest) QuoteTextFields() {
66
if w.PayloadTemplate != "" {
7-
w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate)
7+
w.PayloadTemplate, _ = printPayloadTemplate(w.PayloadTemplate)
88
}
99

1010
for key, val := range w.Config {

pkg/api/v1/testkube/model_webhook_extended.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
*/
1010
package testkube
1111

12-
import "fmt"
12+
import (
13+
"fmt"
14+
15+
"gopkg.in/yaml.v3"
16+
)
1317

1418
type Webhooks []Webhook
1519

@@ -48,7 +52,7 @@ func (w Webhook) GetAnnotations() map[string]string {
4852

4953
func (w *Webhook) QuoteTextFields() {
5054
if w.PayloadTemplate != "" {
51-
w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate)
55+
w.PayloadTemplate, _ = printPayloadTemplate(w.PayloadTemplate)
5256
}
5357

5458
for key, val := range w.Config {
@@ -78,3 +82,15 @@ func (w *Webhook) QuoteTextFields() {
7882
w.Parameters[key] = value
7983
}
8084
}
85+
86+
func printPayloadTemplate(text string) (string, error) {
87+
data := struct {
88+
PayloadTemplate string `yaml:"payloadTemplate"`
89+
}{PayloadTemplate: text}
90+
yamlData, err := yaml.Marshal(&data)
91+
if err != nil {
92+
return "", err
93+
}
94+
95+
return string(yamlData), nil
96+
}

pkg/api/v1/testkube/model_webhook_template_create_request_extended.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import "fmt"
44

55
func (w *WebhookTemplateCreateRequest) QuoteTextFields() {
66
if w.PayloadTemplate != "" {
7-
w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate)
7+
w.PayloadTemplate, _ = printPayloadTemplate(w.PayloadTemplate)
88
}
99

1010
for key, val := range w.Config {

pkg/api/v1/testkube/model_webhook_template_extended.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func (w WebhookTemplate) GetAnnotations() map[string]string {
4848

4949
func (w *WebhookTemplate) QuoteTextFields() {
5050
if w.PayloadTemplate != "" {
51-
w.PayloadTemplate = fmt.Sprintf("%q", w.PayloadTemplate)
51+
w.PayloadTemplate, _ = printPayloadTemplate(w.PayloadTemplate)
5252
}
5353

5454
for key, val := range w.Config {

pkg/crd/crd_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func TestGenerateYAML(t *testing.T) {
1212

1313
t.Run("generate single CRD yaml", func(t *testing.T) {
1414
// given
15-
expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key2: value2 \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 disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n"
15+
expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key2: value2 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n {{ .Id }}\n"
1616
webhooks := []testkube.Webhook{
1717
{
1818
Name: "name1",
@@ -58,7 +58,7 @@ func TestGenerateYAML(t *testing.T) {
5858

5959
t.Run("generate multiple CRDs yaml", func(t *testing.T) {
6060
// given
61-
expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key3: value3 \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 disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n\n---\napiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name2\n namespace: namespace2\n labels:\n key2: value2\n annotations:\n key4: value4 \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 disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n"
61+
expected := "apiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name1\n namespace: namespace1\n labels:\n key1: value1\n annotations:\n key3: value3 \nspec:\n events:\n - start-test\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n {{ .Id }}\n\n---\napiVersion: executor.testkube.io/v1\nkind: Webhook\nmetadata:\n name: name2\n namespace: namespace2\n labels:\n key2: value2\n annotations:\n key4: value4 \nspec:\n events:\n - end-test-success\n uri: http://localhost\n selector: app=backend\n payloadObjectField: text\n payloadTemplateReference: ref\n headers:\n Content-Type: appication/xml\n disabled: true\n config:\n var1:\n value: pb\n var2:\n secret:\n namespace: ns\n name: secret\n key: pr\n parameters:\n - name: var3\n description: descr\n required: true\n example: 12345\n default: 0\n pattern: [0-9]*\n webhookTemplateRef:\n name: tmpl\n {{ .Id }}\n"
6262
webhooks := []testkube.Webhook{
6363
{
6464
Name: "name1",

pkg/crd/templates/webhook.tmpl

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ spec:
3131
{{- if .PayloadObjectField }}
3232
payloadObjectField: {{ .PayloadObjectField }}
3333
{{- end }}
34-
{{- if .PayloadTemplate }}
35-
payloadTemplate: {{ .PayloadTemplate }}
36-
{{- end }}
3734
{{- if .PayloadTemplateReference }}
3835
payloadTemplateReference: {{ .PayloadTemplateReference }}
3936
{{- end }}
@@ -86,3 +83,6 @@ spec:
8683
webhookTemplateRef:
8784
name: {{ .WebhookTemplateRef.Name }}
8885
{{- end }}
86+
{{- if .PayloadTemplate }}
87+
{{ .PayloadTemplate }}
88+
{{- end }}

0 commit comments

Comments
 (0)