...

Source file src/sigs.k8s.io/kustomize/api/internal/plugins/loader/loader_test.go

Documentation: sigs.k8s.io/kustomize/api/internal/plugins/loader

     1  // Copyright 2019 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package loader_test
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  	"sigs.k8s.io/kustomize/api/internal/loader"
    11  	. "sigs.k8s.io/kustomize/api/internal/plugins/loader"
    12  	"sigs.k8s.io/kustomize/api/provider"
    13  	"sigs.k8s.io/kustomize/api/resmap"
    14  	kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
    15  	valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
    16  	"sigs.k8s.io/kustomize/api/types"
    17  	"sigs.k8s.io/kustomize/kyaml/filesys"
    18  )
    19  
    20  const (
    21  	//nolint:gosec
    22  	secretGenerator = `
    23  apiVersion: builtin
    24  kind: SecretGenerator
    25  metadata:
    26    name: secretGenerator
    27  name: mySecret
    28  behavior: merge
    29  envFiles:
    30  - a.env
    31  - b.env
    32  valueFiles:
    33  - longsecret.txt
    34  literals:
    35  - FRUIT=apple
    36  - VEGETABLE=carrot
    37  `
    38  	someServiceGenerator = `
    39  apiVersion: someteam.example.com/v1
    40  kind: SomeServiceGenerator
    41  metadata:
    42    name: myServiceGenerator
    43  service: my-service
    44  port: "12345"
    45  `
    46  )
    47  
    48  func TestLoader(t *testing.T) {
    49  	th := kusttest_test.MakeEnhancedHarness(t).
    50  		BuildGoPlugin("builtin", "", "SecretGenerator").
    51  		BuildGoPlugin("someteam.example.com", "v1", "SomeServiceGenerator")
    52  	defer th.Reset()
    53  	p := provider.NewDefaultDepProvider()
    54  	rmF := resmap.NewFactory(p.GetResourceFactory())
    55  	fsys := filesys.MakeFsInMemory()
    56  	fLdr, err := loader.NewLoader(
    57  		loader.RestrictionRootOnly,
    58  		filesys.Separator, fsys)
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  	generatorConfigs, err := rmF.NewResMapFromBytes([]byte(
    63  		someServiceGenerator + "---\n" + secretGenerator))
    64  	if err != nil {
    65  		t.Fatal(err)
    66  	}
    67  	for _, behavior := range []types.BuiltinPluginLoadingOptions{
    68  		/* types.BploUseStaticallyLinked,
    69  		types.BploLoadFromFileSys */} {
    70  		c := types.EnabledPluginConfig(behavior)
    71  		pLdr := NewLoader(c, rmF, fsys)
    72  		if pLdr == nil {
    73  			t.Fatal("expect non-nil loader")
    74  		}
    75  		_, err = pLdr.LoadGenerators(
    76  			fLdr, valtest_test.MakeFakeValidator(), generatorConfigs)
    77  		if err != nil {
    78  			t.Fatal(err)
    79  		}
    80  	}
    81  }
    82  
    83  func TestLoaderWithWorkingDir(t *testing.T) {
    84  	p := provider.NewDefaultDepProvider()
    85  	rmF := resmap.NewFactory(p.GetResourceFactory())
    86  	fsys := filesys.MakeFsInMemory()
    87  	c := types.EnabledPluginConfig(types.BploLoadFromFileSys)
    88  	pLdr := NewLoader(c, rmF, fsys)
    89  	npLdr := pLdr.LoaderWithWorkingDir("/tmp/dummy")
    90  	require.Equal(t,
    91  		"",
    92  		pLdr.Config().FnpLoadingOptions.WorkingDir,
    93  		"the plugin working dir should not change")
    94  	require.Equal(t,
    95  		"/tmp/dummy",
    96  		npLdr.Config().FnpLoadingOptions.WorkingDir,
    97  		"the plugin working dir is not updated")
    98  }
    99  

View as plain text