github.com/jenkins-x/jx/v2@v2.1.155/pkg/helm/values_tree_test.go (about)

     1  // +build unit
     2  
     3  package helm_test
     4  
     5  import (
     6  	"io/ioutil"
     7  	"os"
     8  	"path"
     9  	"path/filepath"
    10  	"testing"
    11  
    12  	"github.com/jenkins-x/jx/v2/pkg/config"
    13  	"github.com/jenkins-x/jx/v2/pkg/helm"
    14  	"github.com/jenkins-x/jx/v2/pkg/secreturl/localvault"
    15  	"github.com/stretchr/testify/assert"
    16  )
    17  
    18  func TestValuesTree(t *testing.T) {
    19  	t.Parallel()
    20  	vaultClient := localvault.NewFileSystemClient(path.Join("test_data", "local_vault_files"))
    21  	dir, err := createFiles(map[string]string{
    22  		"cheese/values.yaml": "foo: bar",
    23  		"meat/ham/values.yaml": `foo: 
    24    bar: baz`,
    25  	})
    26  	expectedOutput := `cheese:
    27    foo: bar
    28  meat:
    29    ham:
    30      foo:
    31        bar: baz
    32  `
    33  	defer func() {
    34  		err := os.RemoveAll(dir)
    35  		assert.NoError(t, err)
    36  	}()
    37  	assert.NoError(t, err)
    38  	result, _, err := helm.GenerateValues(config.NewRequirementsConfig(), nil, dir, nil, true, vaultClient)
    39  	assert.NoError(t, err)
    40  	assert.Equal(t, expectedOutput, string(result))
    41  }
    42  
    43  func TestValuesTreeWithExistingFile(t *testing.T) {
    44  	t.Parallel()
    45  	vaultClient := localvault.NewFileSystemClient(path.Join("test_data", "local_vault_files"))
    46  	dir, err := createFiles(map[string]string{
    47  		"values.yaml":        "people: pete",
    48  		"cheese/values.yaml": "foo: bar",
    49  		"meat/ham/values.yaml": `foo: 
    50    bar: baz`,
    51  	})
    52  	expectedOutput := `cheese:
    53    foo: bar
    54  meat:
    55    ham:
    56      foo:
    57        bar: baz
    58  people: pete
    59  `
    60  	defer func() {
    61  		err := os.RemoveAll(dir)
    62  		assert.NoError(t, err)
    63  	}()
    64  	assert.NoError(t, err)
    65  	result, _, err := helm.GenerateValues(config.NewRequirementsConfig(), nil, dir, nil, true, vaultClient)
    66  	assert.NoError(t, err)
    67  	assert.Equal(t, expectedOutput, string(result))
    68  }
    69  
    70  func TestValuesTreeWithFileRefs(t *testing.T) {
    71  	t.Parallel()
    72  	vaultClient := localvault.NewFileSystemClient(path.Join("test_data", "local_vault_files"))
    73  	dir, err := createFiles(map[string]string{
    74  		"milk/values.yaml": `foo:
    75    bar:
    76      full-fat.xml:
    77        `,
    78  		"milk/full-fat.xml": `<milk>
    79      <creamy />
    80  </milk>`,
    81  	})
    82  	expectedOutput := `milk:
    83    foo:
    84      bar:
    85        full-fat.xml: |-
    86          <milk>
    87              <creamy />
    88          </milk>
    89  `
    90  	defer func() {
    91  		err := os.RemoveAll(dir)
    92  		assert.NoError(t, err)
    93  	}()
    94  	assert.NoError(t, err)
    95  	result, _, err := helm.GenerateValues(config.NewRequirementsConfig(), nil, dir, nil, true, vaultClient)
    96  	assert.NoError(t, err)
    97  	assert.Equal(t, expectedOutput, string(result))
    98  }
    99  
   100  func createFiles(files map[string]string) (string, error) {
   101  	dir, err := ioutil.TempDir("", "values_tree_test")
   102  	if err != nil {
   103  		return "", err
   104  	}
   105  	for path, value := range files {
   106  		subDir, _ := filepath.Split(path)
   107  		err := os.MkdirAll(filepath.Join(dir, subDir), 0700)
   108  		if err != nil {
   109  			return "", err
   110  		}
   111  		err = ioutil.WriteFile(filepath.Join(dir, path), []byte(value), 0600)
   112  		if err != nil {
   113  			return "", err
   114  		}
   115  	}
   116  	return dir, nil
   117  }