...

Source file src/sigs.k8s.io/kustomize/kyaml/kio/filters/filters_test.go

Documentation: sigs.k8s.io/kustomize/kyaml/kio/filters

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package filters_test
     5  
     6  import (
     7  	"bytes"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	. "sigs.k8s.io/kustomize/kyaml/kio"
    12  	. "sigs.k8s.io/kustomize/kyaml/kio/filters"
    13  )
    14  
    15  var r = `
    16  apiVersion: apps/v1
    17  kind: Deployment
    18  metadata:
    19    name: foo1
    20    namespace: bar
    21  ---
    22  apiVersion: apps/v1
    23  kind: Deployment
    24  metadata:
    25    name: foo2
    26  ---
    27  apiVersion: v1
    28  kind: Service
    29  metadata:
    30    name: foo2
    31    namespace: bar
    32  ---
    33  apiVersion: v1
    34  kind: Service
    35  metadata:
    36    name: foo1
    37  `
    38  
    39  func TestFileSetter_Filter(t *testing.T) {
    40  	in := bytes.NewBufferString(r)
    41  	out := &bytes.Buffer{}
    42  	err := Pipeline{
    43  		Inputs:  []Reader{&ByteReader{Reader: in}},
    44  		Filters: []Filter{&FileSetter{}},
    45  		Outputs: []Writer{ByteWriter{Sort: true, Writer: out}},
    46  	}.Execute()
    47  	if !assert.NoError(t, err) {
    48  		return
    49  	}
    50  	assert.Equal(t, `apiVersion: apps/v1
    51  kind: Deployment
    52  metadata:
    53    name: foo1
    54    namespace: bar
    55    annotations:
    56      internal.config.kubernetes.io/path: 'foo1_deployment.yaml'
    57      config.kubernetes.io/path: 'foo1_deployment.yaml'
    58  ---
    59  apiVersion: v1
    60  kind: Service
    61  metadata:
    62    name: foo1
    63    annotations:
    64      internal.config.kubernetes.io/path: 'foo1_service.yaml'
    65      config.kubernetes.io/path: 'foo1_service.yaml'
    66  ---
    67  apiVersion: apps/v1
    68  kind: Deployment
    69  metadata:
    70    name: foo2
    71    annotations:
    72      internal.config.kubernetes.io/path: 'foo2_deployment.yaml'
    73      config.kubernetes.io/path: 'foo2_deployment.yaml'
    74  ---
    75  apiVersion: v1
    76  kind: Service
    77  metadata:
    78    name: foo2
    79    namespace: bar
    80    annotations:
    81      internal.config.kubernetes.io/path: 'foo2_service.yaml'
    82      config.kubernetes.io/path: 'foo2_service.yaml'
    83  `, out.String())
    84  }
    85  
    86  func TestFileSetter_Filter_pattern(t *testing.T) {
    87  	in := bytes.NewBufferString(r)
    88  	out := &bytes.Buffer{}
    89  	err := Pipeline{
    90  		Inputs: []Reader{&ByteReader{Reader: in}},
    91  		Filters: []Filter{&FileSetter{
    92  			FilenamePattern: "%n_%s_%k.yaml",
    93  		}},
    94  		Outputs: []Writer{ByteWriter{Sort: true, Writer: out}},
    95  	}.Execute()
    96  	if !assert.NoError(t, err) {
    97  		return
    98  	}
    99  	assert.Equal(t, `apiVersion: v1
   100  kind: Service
   101  metadata:
   102    name: foo1
   103    annotations:
   104      internal.config.kubernetes.io/path: 'foo1__service.yaml'
   105      config.kubernetes.io/path: 'foo1__service.yaml'
   106  ---
   107  apiVersion: apps/v1
   108  kind: Deployment
   109  metadata:
   110    name: foo1
   111    namespace: bar
   112    annotations:
   113      internal.config.kubernetes.io/path: 'foo1_bar_deployment.yaml'
   114      config.kubernetes.io/path: 'foo1_bar_deployment.yaml'
   115  ---
   116  apiVersion: apps/v1
   117  kind: Deployment
   118  metadata:
   119    name: foo2
   120    annotations:
   121      internal.config.kubernetes.io/path: 'foo2__deployment.yaml'
   122      config.kubernetes.io/path: 'foo2__deployment.yaml'
   123  ---
   124  apiVersion: v1
   125  kind: Service
   126  metadata:
   127    name: foo2
   128    namespace: bar
   129    annotations:
   130      internal.config.kubernetes.io/path: 'foo2_bar_service.yaml'
   131      config.kubernetes.io/path: 'foo2_bar_service.yaml'
   132  `, out.String())
   133  }
   134  
   135  func TestFileSetter_Filter_empty(t *testing.T) {
   136  	in := bytes.NewBufferString(r)
   137  	out := &bytes.Buffer{}
   138  	err := Pipeline{
   139  		Inputs: []Reader{&ByteReader{Reader: in}},
   140  		Filters: []Filter{&FileSetter{
   141  			FilenamePattern: "resource.yaml",
   142  		}},
   143  		Outputs: []Writer{ByteWriter{Writer: out}},
   144  	}.Execute()
   145  	if !assert.NoError(t, err) {
   146  		return
   147  	}
   148  	assert.Equal(t, `apiVersion: apps/v1
   149  kind: Deployment
   150  metadata:
   151    name: foo1
   152    namespace: bar
   153    annotations:
   154      internal.config.kubernetes.io/path: 'resource.yaml'
   155      config.kubernetes.io/path: 'resource.yaml'
   156  ---
   157  apiVersion: apps/v1
   158  kind: Deployment
   159  metadata:
   160    name: foo2
   161    annotations:
   162      internal.config.kubernetes.io/path: 'resource.yaml'
   163      config.kubernetes.io/path: 'resource.yaml'
   164  ---
   165  apiVersion: v1
   166  kind: Service
   167  metadata:
   168    name: foo2
   169    namespace: bar
   170    annotations:
   171      internal.config.kubernetes.io/path: 'resource.yaml'
   172      config.kubernetes.io/path: 'resource.yaml'
   173  ---
   174  apiVersion: v1
   175  kind: Service
   176  metadata:
   177    name: foo1
   178    annotations:
   179      internal.config.kubernetes.io/path: 'resource.yaml'
   180      config.kubernetes.io/path: 'resource.yaml'
   181  `, out.String())
   182  }
   183  

View as plain text