mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 10:15:22 +00:00
* return copied Node * add a test case about imageTagTransformer for anchor scenario * add TestPatchTransformerAnchor * TestReplacementTransformerAnchor
313 lines
5.6 KiB
Go
313 lines
5.6 KiB
Go
// Copyright 2021 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package main_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
|
)
|
|
|
|
func TestReplacementTransformer(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t).
|
|
PrepBuiltin("ReplacementTransformer")
|
|
defer th.Reset()
|
|
|
|
rm := th.LoadAndRunTransformer(`
|
|
apiVersion: builtin
|
|
kind: ReplacementTransformer
|
|
metadata:
|
|
name: notImportantHere
|
|
replacements:
|
|
- source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.image
|
|
`, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: postgres:1.8.0
|
|
name: postgresdb
|
|
`)
|
|
|
|
th.AssertActualEqualsExpected(rm, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: foobar:1
|
|
name: postgresdb
|
|
`)
|
|
}
|
|
|
|
func TestReplacementTransformerFromPath(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t).
|
|
PrepBuiltin("ReplacementTransformer")
|
|
defer th.Reset()
|
|
|
|
th.WriteF("replacement.yaml", `
|
|
source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.image`)
|
|
|
|
rm := th.LoadAndRunTransformer(`
|
|
apiVersion: builtin
|
|
kind: ReplacementTransformer
|
|
metadata:
|
|
name: notImportantHere
|
|
replacements:
|
|
- path: replacement.yaml
|
|
`, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: postgres:1.8.0
|
|
name: postgresdb
|
|
`)
|
|
|
|
th.AssertActualEqualsExpected(rm, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: foobar:1
|
|
name: postgresdb
|
|
`)
|
|
}
|
|
|
|
func TestReplacementTransformerFromPathMultiple(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t).
|
|
PrepBuiltin("ReplacementTransformer")
|
|
defer th.Reset()
|
|
|
|
th.WriteF("replacement.yaml", `
|
|
- source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.image
|
|
- source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.name
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.name`)
|
|
|
|
rm := th.LoadAndRunTransformer(`
|
|
apiVersion: builtin
|
|
kind: ReplacementTransformer
|
|
metadata:
|
|
name: notImportantHere
|
|
replacements:
|
|
- path: replacement.yaml
|
|
`, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: postgres:1.8.0
|
|
name: postgresdb
|
|
|
|
`)
|
|
|
|
th.AssertActualEqualsExpected(rm, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
`)
|
|
}
|
|
|
|
func TestReplacementTransformerAnchor(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t).
|
|
PrepBuiltin("ReplacementTransformer")
|
|
defer th.Reset()
|
|
|
|
rm := th.LoadAndRunTransformer(`
|
|
apiVersion: builtin
|
|
kind: ReplacementTransformer
|
|
metadata:
|
|
name: notImportantHere
|
|
replacements:
|
|
- source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.name
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.name
|
|
`, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: &name origin
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced
|
|
- image: foobar:1
|
|
name: *name
|
|
- image: foobar:1
|
|
name: *name
|
|
`)
|
|
|
|
th.AssertActualEqualsExpected(rm, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: origin
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced
|
|
- image: foobar:1
|
|
name: replaced
|
|
- image: foobar:1
|
|
name: origin
|
|
`)
|
|
}
|
|
|
|
func TestReplacementTransformerComplexType(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t).
|
|
PrepBuiltin("ReplacementTransformer")
|
|
defer th.Reset()
|
|
|
|
rm := th.LoadAndRunTransformer(`
|
|
apiVersion: builtin
|
|
kind: ReplacementTransformer
|
|
metadata:
|
|
name: notImportantHere
|
|
replacements:
|
|
- source:
|
|
kind: Pod
|
|
name: pod
|
|
fieldPath: spec.containers
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers
|
|
`, `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod
|
|
spec:
|
|
containers:
|
|
- image: busybox
|
|
name: myapp-container
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy2
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers: {}
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy3
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers: {}
|
|
`)
|
|
|
|
th.AssertActualEqualsExpected(rm, `
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: pod
|
|
spec:
|
|
containers:
|
|
- image: busybox
|
|
name: myapp-container
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy2
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: busybox
|
|
name: myapp-container
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy3
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: busybox
|
|
name: myapp-container
|
|
`)
|
|
}
|