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 }