File: disablenamesuffix_test.go

package info (click to toggle)
golang-k8s-sigs-kustomize-api 0.19.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,732 kB
  • sloc: makefile: 206; sh: 67
file content (138 lines) | stat: -rw-r--r-- 3,227 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0

package krusty_test

import (
	"strings"
	"testing"

	"sigs.k8s.io/kustomize/api/resmap"
	"sigs.k8s.io/kustomize/api/resource"
	kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)

func findSecret(m resmap.ResMap, prefix string) *resource.Resource {
	for _, r := range m.Resources() {
		if r.OrgId().Kind == "Secret" {
			if prefix == "" || strings.HasPrefix(r.GetName(), prefix) {
				return r
			}
		}
	}
	return nil
}

func TestDisableNameSuffixHash(t *testing.T) {
	th := kusttest_test.MakeHarness(t)
	const kustomizationContent = `
namePrefix: foo-
nameSuffix: -bar
namespace: ns1
commonLabels:
  app: nginx
commonAnnotations:
  note: This is a test annotation
resources:
  - deployment.yaml
  - namespace.yaml
generatorOptions:
  disableNameSuffixHash: false
configMapGenerator:
- name: literalConfigMap
  literals:
  - DB_USERNAME=admin
  - DB_PASSWORD=somepw
secretGenerator:
- name: secret
  literals:
    - DB_USERNAME=admin
    - DB_PASSWORD=somepw
  type: Opaque
patchesJson6902:
- target:
    group: apps
    version: v1
    kind: Deployment
    name: dply1
  path: jsonpatch.json
`

	th.WriteK("/whatever", kustomizationContent)
	th.WriteF("/whatever/deployment.yaml", `
apiVersion: apps/v1
metadata:
  name: dply1
kind: Deployment
`)
	th.WriteF("/whatever/namespace.yaml", `
apiVersion: v1
kind: Namespace
metadata:
  name: ns1
`)
	th.WriteF("/whatever/jsonpatch.json", `[
    {"op": "add", "path": "/spec/replica", "value": "3"}
]`)

	m := th.Run("/whatever", th.MakeDefaultOptions())

	secret := findSecret(m, "")
	if secret == nil {
		t.Errorf("Expected to find a Secret")
	} else if secret.GetName() != "foo-secret-bar-82c2g5f8f6" {
		t.Errorf("unexpected secret resource name: %s", secret.GetName())
	}

	th.WriteK("/whatever",
		strings.ReplaceAll(kustomizationContent,
			"disableNameSuffixHash: false",
			"disableNameSuffixHash: true"))
	m = th.Run("/whatever", th.MakeDefaultOptions())
	secret = findSecret(m, "")
	if secret == nil {
		t.Errorf("Expected to find a Secret")
	} else if secret.GetName() != "foo-secret-bar" { // No hash at end.
		t.Errorf("unexpected secret resource name: %s", secret.GetName())
	}
}
func TestDisableNameSuffixHashPerObject(t *testing.T) {
	th := kusttest_test.MakeHarness(t)
	const kustomizationContent = `
generatorOptions:
  disableNameSuffixHash: false
secretGenerator:
- name: nohash
  options:
    disableNameSuffixHash: true
  literals:
    - DB_USERNAME=admin
    - DB_PASSWORD=somepw
  type: Opaque
- name: yeshash
  options:
    disableNameSuffixHash: false
  literals:
    - DB_USERNAME=admin
    - DB_PASSWORD=somepw
  type: Opaque
`

	th.WriteK("/whatever", kustomizationContent)

	m := th.Run("/whatever", th.MakeDefaultOptions())

	secret := findSecret(m, "nohash")
	if secret == nil {
		t.Errorf("Expected to find a Secret")
	} else if secret.GetName() != "nohash" {
		t.Errorf("unexpected secret resource name: %s", secret.GetName())
	}

	secret = findSecret(m, "yeshash")
	if secret == nil {
		t.Errorf("Expected to find a Secret")
	} else if secret.GetName() != "yeshash-82c2g5f8f6" {
		t.Errorf("unexpected secret resource name: %s", secret.GetName())
	}
}