...

Source file src/sigs.k8s.io/cli-utils/pkg/manifestreader/stream_test.go

Documentation: sigs.k8s.io/cli-utils/pkg/manifestreader

     1  // Copyright 2020 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package manifestreader
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	cmdtesting "k8s.io/kubectl/pkg/cmd/testing"
    12  )
    13  
    14  func TestStreamManifestReader_Read(t *testing.T) {
    15  	testCases := map[string]struct {
    16  		manifests        string
    17  		namespace        string
    18  		enforceNamespace bool
    19  		validate         bool
    20  
    21  		infosCount int
    22  		namespaces []string
    23  	}{
    24  		"namespace should be set if not already present": {
    25  			manifests:        depManifest,
    26  			namespace:        "foo",
    27  			enforceNamespace: true,
    28  
    29  			infosCount: 1,
    30  			namespaces: []string{"foo"},
    31  		},
    32  		"multiple resources": {
    33  			manifests:        depManifest + "\n---\n" + cmManifest,
    34  			namespace:        "bar",
    35  			enforceNamespace: false,
    36  
    37  			infosCount: 2,
    38  			namespaces: []string{"bar", "bar"},
    39  		},
    40  	}
    41  
    42  	for tn, tc := range testCases {
    43  		t.Run(tn, func(t *testing.T) {
    44  			tf := cmdtesting.NewTestFactory().WithNamespace("test-ns")
    45  			defer tf.Cleanup()
    46  
    47  			mapper, err := tf.ToRESTMapper()
    48  			if !assert.NoError(t, err) {
    49  				t.FailNow()
    50  			}
    51  
    52  			stringReader := strings.NewReader(tc.manifests)
    53  
    54  			objs, err := (&StreamManifestReader{
    55  				ReaderName: "testReader",
    56  				Reader:     stringReader,
    57  				ReaderOptions: ReaderOptions{
    58  					Mapper:           mapper,
    59  					Namespace:        tc.namespace,
    60  					EnforceNamespace: tc.enforceNamespace,
    61  					Validate:         tc.validate,
    62  				},
    63  			}).Read()
    64  
    65  			assert.NoError(t, err)
    66  			assert.Equal(t, len(objs), tc.infosCount)
    67  
    68  			for i, obj := range objs {
    69  				assert.Equal(t, tc.namespaces[i], obj.GetNamespace())
    70  			}
    71  		})
    72  	}
    73  }
    74  

View as plain text