...

Source file src/sigs.k8s.io/kustomize/api/filters/prefix/prefix_test.go

Documentation: sigs.k8s.io/kustomize/api/filters/prefix

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package prefix_test
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"sigs.k8s.io/kustomize/api/filters/prefix"
    12  	filtertest_test "sigs.k8s.io/kustomize/api/testutils/filtertest"
    13  	"sigs.k8s.io/kustomize/api/types"
    14  	"sigs.k8s.io/kustomize/kyaml/yaml"
    15  )
    16  
    17  var mutationTrackerStub = filtertest_test.MutationTrackerStub{}
    18  
    19  var tests = map[string]TestCase{
    20  	"prefix": {
    21  		input: `
    22  apiVersion: example.com/v1
    23  kind: Foo
    24  metadata:
    25    name: instance
    26  ---
    27  apiVersion: example.com/v1
    28  kind: Bar
    29  metadata:
    30    name: instance
    31  `,
    32  		expected: `
    33  apiVersion: example.com/v1
    34  kind: Foo
    35  metadata:
    36    name: foo-instance
    37  ---
    38  apiVersion: example.com/v1
    39  kind: Bar
    40  metadata:
    41    name: foo-instance
    42  `,
    43  		filter: prefix.Filter{
    44  			Prefix:    "foo-",
    45  			FieldSpec: types.FieldSpec{Path: "metadata/name"},
    46  		},
    47  	},
    48  
    49  	"data-fieldspecs": {
    50  		input: `
    51  apiVersion: example.com/v1
    52  kind: Foo
    53  metadata:
    54    name: instance
    55  a:
    56    b:
    57      c: d
    58  ---
    59  apiVersion: example.com/v1
    60  kind: Bar
    61  metadata:
    62    name: instance
    63  a:
    64    b:
    65      c: d
    66  `,
    67  		expected: `
    68  apiVersion: example.com/v1
    69  kind: Foo
    70  metadata:
    71    name: instance
    72  a:
    73    b:
    74      c: foo-d
    75  ---
    76  apiVersion: example.com/v1
    77  kind: Bar
    78  metadata:
    79    name: instance
    80  a:
    81    b:
    82      c: foo-d
    83  `,
    84  		filter: prefix.Filter{
    85  			Prefix:    "foo-",
    86  			FieldSpec: types.FieldSpec{Path: "a/b/c"},
    87  		},
    88  	},
    89  
    90  	"mutation tracker": {
    91  		input: `
    92  apiVersion: example.com/v1
    93  kind: Foo
    94  metadata:
    95    name: instance
    96  ---
    97  apiVersion: example.com/v1
    98  kind: Bar
    99  metadata:
   100    name: instance
   101  `,
   102  		expected: `
   103  apiVersion: example.com/v1
   104  kind: Foo
   105  metadata:
   106    name: foo-instance
   107  ---
   108  apiVersion: example.com/v1
   109  kind: Bar
   110  metadata:
   111    name: foo-instance
   112  `,
   113  		filter: prefix.Filter{
   114  			Prefix:    "foo-",
   115  			FieldSpec: types.FieldSpec{Path: "metadata/name"},
   116  		},
   117  		mutationTracker: mutationTrackerStub.MutationTracker,
   118  		expectedSetValueArgs: []filtertest_test.SetValueArg{
   119  			{
   120  				Value:    "foo-instance",
   121  				NodePath: []string{"metadata", "name"},
   122  			},
   123  			{
   124  				Value:    "foo-instance",
   125  				NodePath: []string{"metadata", "name"},
   126  			},
   127  		},
   128  	},
   129  }
   130  
   131  type TestCase struct {
   132  	input                string
   133  	expected             string
   134  	filter               prefix.Filter
   135  	mutationTracker      func(key, value, tag string, node *yaml.RNode)
   136  	expectedSetValueArgs []filtertest_test.SetValueArg
   137  }
   138  
   139  func TestFilter(t *testing.T) {
   140  	for name := range tests {
   141  		mutationTrackerStub.Reset()
   142  		test := tests[name]
   143  		test.filter.WithMutationTracker(test.mutationTracker)
   144  		t.Run(name, func(t *testing.T) {
   145  			if !assert.Equal(t,
   146  				strings.TrimSpace(test.expected),
   147  				strings.TrimSpace(
   148  					filtertest_test.RunFilter(t, test.input, test.filter))) {
   149  				t.FailNow()
   150  			}
   151  			assert.Equal(t, test.expectedSetValueArgs, mutationTrackerStub.SetValueArgs())
   152  		})
   153  	}
   154  }
   155  

View as plain text