github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/custom_file_test.go (about) 1 package api 2 3 import ( 4 "testing" 5 6 "github.com/go-yaml/yaml" 7 "github.com/stretchr/testify/assert" 8 ) 9 10 type TestContextFruit struct { 11 ChoiceOfFruit string 12 } 13 14 type TestContextAnimal struct { 15 IsADog bool 16 Name string 17 YearOfBirth string 18 } 19 20 var ( 21 // simple plain file case 22 customFileContent = `path: /tmp/testfile 23 permissions: 0777 24 content: hello world 25 ` 26 27 // customfile contains a template 28 customFileTemplate = `path: /tmp/testfile 29 permissions: 0777 30 template: I love {{ .ChoiceOfFruit }} 31 ` 32 ) 33 34 func TestCustomFileRendersContent(t *testing.T) { 35 cfile := CustomFile{} 36 err := yaml.Unmarshal([]byte(customFileContent), &cfile) 37 assert.NoError(t, err) 38 output, err := cfile.RenderContent(TestContextFruit{}) 39 assert.NoError(t, err) 40 assert.Equal(t, "hello world", output) 41 } 42 43 func TestCustomFileRenderWithEncoding(t *testing.T) { 44 helloWorldEncoded := `H4sIAAAAAAAA/8pIzcnJVyjPL8pJAQQAAP//hRFKDQsAAAA=` 45 46 cfile := CustomFile{} 47 err := yaml.Unmarshal([]byte(customFileContent), &cfile) 48 assert.NoError(t, err) 49 output, err := cfile.RenderGzippedBase64Content(TestContextFruit{}) 50 assert.NoError(t, err) 51 assert.Equal(t, helloWorldEncoded, output) 52 } 53 54 func TestCustomFileRenderTemplate(t *testing.T) { 55 cfile := CustomFile{} 56 err := yaml.Unmarshal([]byte(customFileTemplate), &cfile) 57 assert.NoError(t, err) 58 output, err := cfile.RenderContent(TestContextFruit{ChoiceOfFruit: "apples"}) 59 assert.NoError(t, err) 60 assert.Equal(t, "I love apples", output) 61 } 62 63 func TestCustomFileRenderTemplateWithEncoding(t *testing.T) { 64 iLoveApplesEncoded := `H4sIAAAAAAAA//JUyMkvS1VILCjISS0GBAAA//+rYX5CDQAAAA==` 65 66 cfile := CustomFile{} 67 err := yaml.Unmarshal([]byte(customFileTemplate), &cfile) 68 assert.NoError(t, err) 69 output, err := cfile.RenderGzippedBase64Content(TestContextFruit{ChoiceOfFruit: "apples"}) 70 assert.NoError(t, err) 71 assert.Equal(t, iLoveApplesEncoded, output) 72 } 73 74 func TestCustomBadTemplate(t *testing.T) { 75 badTemplate := `path: /tmp/testfile 76 permissions: 0777 77 template: I love {{ if .ChoiceOfFruit }}` 78 79 cfile := CustomFile{} 80 err := yaml.Unmarshal([]byte(badTemplate), &cfile) 81 assert.NoError(t, err) 82 output, err := cfile.RenderContent(TestContextAnimal{}) 83 assert.Error(t, err) 84 assert.Equal(t, "", output) 85 } 86 87 func TestDualCustomFileContent(t *testing.T) { 88 // customFile contains both content AND template 89 cf := `path: /tmp/testfile 90 permissions: 0777 91 content: I love bananas 92 template: I love {{ .ChoiceOfFruit }} 93 ` 94 95 cfile := CustomFile{} 96 err := yaml.Unmarshal([]byte(cf), &cfile) 97 assert.NoError(t, err) 98 output, err := cfile.RenderContent(TestContextFruit{ChoiceOfFruit: "apples"}) 99 assert.NoError(t, err) 100 assert.Equal(t, "I love apples", output) 101 }