...

Source file src/sigs.k8s.io/kustomize/api/krusty/validatingwebhook_test.go

Documentation: sigs.k8s.io/kustomize/api/krusty

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package krusty_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
    10  )
    11  
    12  // Reproduce issue #3732
    13  func TestValidatingWebhookCombinedNamespaces(t *testing.T) {
    14  	th := kusttest_test.MakeHarness(t)
    15  	th.WriteK("base", `
    16  resources:
    17  - service.yaml
    18  - validatingwebhook.yaml
    19  `)
    20  	th.WriteF("base/service.yaml", `
    21  apiVersion: v1
    22  kind: Service
    23  metadata:
    24    name: admission
    25    namespace: base-namespace
    26  spec:
    27    type: ClusterIP
    28    ports:
    29      - name: https-webhook
    30        port: 443
    31        targetPort: webhook
    32  `)
    33  	th.WriteF("base/validatingwebhook.yaml", `
    34  apiVersion: admissionregistration.k8s.io/v1
    35  kind: ValidatingWebhookConfiguration
    36  metadata:
    37    name: validatingwebhook
    38  webhooks:
    39    - name: validate
    40      matchPolicy: Equivalent
    41      rules:
    42        - apiGroups:
    43            - networking.k8s.io
    44          apiVersions:
    45            - v1beta1
    46          operations:
    47            - CREATE
    48            - UPDATE
    49          resources:
    50            - ingresses
    51      failurePolicy: Fail
    52      sideEffects: None
    53      admissionReviewVersions:
    54        - v1
    55        - v1beta1
    56      clientConfig:
    57        service:
    58          namespace: base-namespace
    59          name: admission
    60          path: /networking/v1beta1/ingresses
    61  `)
    62  	th.WriteK("overlay", `
    63  namespace: merge-namespace
    64  resources:
    65  - ../base
    66  patchesStrategicMerge:
    67  - validatingwebhookdelete.yaml
    68  `)
    69  	th.WriteF("overlay/validatingwebhookdelete.yaml", `
    70  apiVersion: admissionregistration.k8s.io/v1
    71  kind: ValidatingWebhookConfiguration
    72  metadata:
    73    name: validatingwebhook
    74  $patch: delete
    75  `)
    76  	th.WriteK("combined", `
    77  resources:
    78  - ../base
    79  - ../overlay
    80  `)
    81  	m := th.Run("combined", th.MakeDefaultOptions())
    82  	th.AssertActualEqualsExpected(m, `
    83  apiVersion: v1
    84  kind: Service
    85  metadata:
    86    name: admission
    87    namespace: base-namespace
    88  spec:
    89    ports:
    90    - name: https-webhook
    91      port: 443
    92      targetPort: webhook
    93    type: ClusterIP
    94  ---
    95  apiVersion: admissionregistration.k8s.io/v1
    96  kind: ValidatingWebhookConfiguration
    97  metadata:
    98    name: validatingwebhook
    99  webhooks:
   100  - admissionReviewVersions:
   101    - v1
   102    - v1beta1
   103    clientConfig:
   104      service:
   105        name: admission
   106        namespace: merge-namespace
   107        path: /networking/v1beta1/ingresses
   108    failurePolicy: Fail
   109    matchPolicy: Equivalent
   110    name: validate
   111    rules:
   112    - apiGroups:
   113      - networking.k8s.io
   114      apiVersions:
   115      - v1beta1
   116      operations:
   117      - CREATE
   118      - UPDATE
   119      resources:
   120      - ingresses
   121    sideEffects: None
   122  ---
   123  apiVersion: v1
   124  kind: Service
   125  metadata:
   126    name: admission
   127    namespace: merge-namespace
   128  spec:
   129    ports:
   130    - name: https-webhook
   131      port: 443
   132      targetPort: webhook
   133    type: ClusterIP
   134  `)
   135  }
   136  

View as plain text