...

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

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

     1  // Copyright 2022 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  func TestGkeGenerator(t *testing.T) {
    13  	th := kusttest_test.MakeEnhancedHarness(t)
    14  	defer th.Reset()
    15  
    16  	th.WriteK(".", `
    17  generators:
    18  - |-
    19    apiVersion: builtin
    20    kind: IAMPolicyGenerator
    21    metadata:
    22      name: my-gke-generator
    23    cloud: gke
    24    kubernetesService:
    25      name: k8s-sa-name
    26    serviceAccount:
    27      name: gsa-name
    28      projectId: project-id
    29  `)
    30  	expected := `
    31  apiVersion: v1
    32  kind: ServiceAccount
    33  metadata:
    34    annotations:
    35      iam.gke.io/gcp-service-account: gsa-name@project-id.iam.gserviceaccount.com
    36    name: k8s-sa-name
    37  `
    38  	m := th.Run(".", th.MakeDefaultOptions())
    39  	th.AssertActualEqualsExpected(m, expected)
    40  }
    41  
    42  func TestGkeGeneratorWithNamespace(t *testing.T) {
    43  	th := kusttest_test.MakeEnhancedHarness(t)
    44  	defer th.Reset()
    45  
    46  	th.WriteK(".", `
    47  generators:
    48  - |-
    49    apiVersion: builtin
    50    kind: IAMPolicyGenerator
    51    metadata:
    52      name: my-gke-generator
    53    cloud: gke
    54    kubernetesService: 
    55      namespace: k8s-namespace
    56      name: k8s-sa-name
    57    serviceAccount:
    58      name: gsa-name
    59      projectId: project-id
    60  `)
    61  	expected := `
    62  apiVersion: v1
    63  kind: ServiceAccount
    64  metadata:
    65    annotations:
    66      iam.gke.io/gcp-service-account: gsa-name@project-id.iam.gserviceaccount.com
    67    name: k8s-sa-name
    68    namespace: k8s-namespace
    69  `
    70  	m := th.Run(".", th.MakeDefaultOptions())
    71  	th.AssertActualEqualsExpected(m, expected)
    72  }
    73  
    74  func TestGkeGeneratorWithTwo(t *testing.T) {
    75  	th := kusttest_test.MakeEnhancedHarness(t)
    76  	defer th.Reset()
    77  
    78  	th.WriteK(".", `
    79  generators:
    80  - gkegenerator1.yaml
    81  - gkegenerator2.yaml
    82  `)
    83  
    84  	th.WriteF("gkegenerator1.yaml", `
    85  apiVersion: builtin
    86  kind: IAMPolicyGenerator
    87  metadata:
    88    name: my-gke-generator1
    89  cloud: gke
    90  kubernetesService: 
    91    namespace: k8s-namespace-1
    92    name: k8s-sa-name-1
    93  serviceAccount:
    94    name: gsa-name-1
    95    projectId: project-id-1
    96  `)
    97  	th.WriteF("gkegenerator2.yaml", `
    98  apiVersion: builtin
    99  kind: IAMPolicyGenerator
   100  metadata:
   101    name: my-gke-generator2
   102  cloud: gke
   103  kubernetesService:
   104    name: k8s-sa-name-2
   105  serviceAccount:
   106    name: gsa-name-2
   107    projectId: project-id-2
   108  `)
   109  	expected := `
   110  apiVersion: v1
   111  kind: ServiceAccount
   112  metadata:
   113    annotations:
   114      iam.gke.io/gcp-service-account: gsa-name-1@project-id-1.iam.gserviceaccount.com
   115    name: k8s-sa-name-1
   116    namespace: k8s-namespace-1
   117  ---
   118  apiVersion: v1
   119  kind: ServiceAccount
   120  metadata:
   121    annotations:
   122      iam.gke.io/gcp-service-account: gsa-name-2@project-id-2.iam.gserviceaccount.com
   123    name: k8s-sa-name-2
   124  `
   125  	m := th.Run(".", th.MakeDefaultOptions())
   126  	th.AssertActualEqualsExpected(m, expected)
   127  }
   128  

View as plain text