// Copyright 2019 The Kubernetes Authors. // SPDX-License-Identifier: Apache-2.0 package target_test import ( "sigs.k8s.io/kustomize/v3/pkg/kusttest" "testing" ) func TestNamespacedSecrets(t *testing.T) { th := kusttest_test.NewKustTestHarness(t, "/app") th.WriteF("/app/secrets.yaml", ` apiVersion: v1 kind: Secret metadata: name: dummy namespace: default type: Opaque data: dummy: "" --- apiVersion: v1 kind: Secret metadata: name: dummy namespace: kube-system type: Opaque data: dummy: "" `) // This should find the proper secret. th.WriteF("/app/role.yaml", ` kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dummy rules: - apiGroups: [""] resources: ["secrets"] resourceNames: ["dummy"] verbs: ["get"] `) th.WriteK("/app", ` resources: - secrets.yaml - role.yaml `) m, err := th.MakeKustTarget().MakeCustomizedResMap() // This validates Fix #1444. This should not be an error anymore - // the secrets have the same name but are in different namespaces. // The ClusterRole (by def) is not in a namespace, // an in this case applies to *any* Secret resource // named "dummy" if err != nil { t.Fatalf("Err: %v", err) } th.AssertActualEqualsExpected(m, ` apiVersion: v1 data: dummy: "" kind: Secret metadata: name: dummy namespace: default type: Opaque --- apiVersion: v1 data: dummy: "" kind: Secret metadata: name: dummy namespace: kube-system type: Opaque --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: dummy rules: - apiGroups: - "" resourceNames: - dummy resources: - secrets verbs: - get `) }