implements to replacements value in the structured data

This commit is contained in:
koba1t
2024-02-22 04:35:54 +09:00
parent 39086340ad
commit 2dc0d0da8b
3 changed files with 87 additions and 2 deletions

View File

@@ -2779,7 +2779,7 @@ spec:
name: myingress
fieldPaths:
- spec.tls.0.hosts.0
- spec.tls.0.secretName
- spec.tls.0.secretName
options:
create: true
`,
@@ -4498,3 +4498,74 @@ metadata:
})
}
}
func TestValueInlineStructuredData(t *testing.T) {
testCases := map[string]struct {
input string
replacements string
expected string
expectedErr string
}{
"replacement contain jsonfield": {
input: `apiVersion: v1
kind: ConfigMap
metadata:
name: target-configmap
data:
config.json: |-
{
"config": {
"id": "42",
"hostname": "REPLACE_TARGET_HOSTNAME"
}
}
`,
replacements: `replacements:
- source:
kind: ConfigMap
name: target-configmap
fieldPath: metadata.name
targets:
- select:
kind: ConfigMap
fieldPaths:
- data.config\.json.config.hostname
`,
expected: `apiVersion: v1
kind: ConfigMap
metadata:
name: target-configmap
data:
config.json: |-
{
"config": {
"id": "42",
"hostname": "target-configmap"
}
}`,
},
}
for tn, tc := range testCases {
t.Run(tn, func(t *testing.T) {
f := Filter{}
err := yaml.Unmarshal([]byte(tc.replacements), &f)
if !assert.NoError(t, err) {
t.FailNow()
}
actual, err := filtertest.RunFilterE(t, tc.input, f)
if err != nil {
if tc.expectedErr == "" {
t.Errorf("unexpected error: %s\n", err.Error())
t.FailNow()
}
if !assert.Contains(t, err.Error(), tc.expectedErr) {
t.FailNow()
}
}
if !assert.Equal(t, strings.TrimSpace(tc.expected), strings.TrimSpace(actual)) {
t.FailNow()
}
})
}
}