github.com/xmidt-org/webpa-common@v1.11.9/resource/template_test.go (about) 1 package resource 2 3 import ( 4 "fmt" 5 "github.com/stretchr/testify/assert" 6 "testing" 7 ) 8 9 func TestMustParseValidTemplate(t *testing.T) { 10 assert := assert.New(t) 11 12 if template := MustParse("/etc/{key}.txt"); assert.NotNil(template) { 13 result, err := template.Expand(map[string]interface{}{"key": "value"}) 14 assert.Equal(result, "/etc/value.txt") 15 assert.Nil(err) 16 } 17 } 18 19 func TestMustParseInvalidTemplate(t *testing.T) { 20 assert := assert.New(t) 21 defer func() { 22 r := recover() 23 assert.NotNil(r) 24 }() 25 26 MustParse("/invalid/{bad") 27 } 28 29 func TestTemplateFile(t *testing.T) { 30 assert := assert.New(t) 31 32 for _, fileTemplate := range []string{testFilePathTemplate, testFileURITemplate} { 33 t.Logf("fileTemplate: %s", fileTemplate) 34 factory := &Factory{ 35 URI: fileTemplate, 36 } 37 38 expanders := make([]Expander, 0, 2) 39 if expander, err := factory.NewExpander(); assert.NotNil(expander) && assert.Nil(err) { 40 assert.Equal(fileTemplate, fmt.Sprintf("%s", expander)) 41 expanders = append(expanders, expander) 42 } 43 44 if expander, err := factory.NewExpander(fileNameParameter); assert.NotNil(expander) && assert.Nil(err) { 45 assert.Equal(fileTemplate, fmt.Sprintf("%s", expander)) 46 expanders = append(expanders, expander) 47 } 48 49 for _, expander := range expanders { 50 names := expander.Names() 51 assert.Len(names, 1) 52 assert.Equal(fileNameParameter, names[0]) 53 54 values := map[string]interface{}{ 55 fileNameParameter: testFile, 56 } 57 58 if loader, err := expander.Expand(values); assert.NotNil(loader) && assert.Nil(err) { 59 data, err := ReadAll(loader) 60 assert.Equal(testContents, string(data)) 61 assert.Nil(err) 62 } 63 64 loader, err := expander.Expand(123) 65 assert.Nil(loader) 66 assert.NotNil(err) 67 } 68 69 expander, err := factory.NewExpander("nosuch") 70 assert.Nil(expander) 71 assert.NotNil(err) 72 } 73 } 74 75 func TestTemplateHTTP(t *testing.T) { 76 assert := assert.New(t) 77 factory := &Factory{ 78 URI: testFileURLTemplate, 79 } 80 81 expanders := make([]Expander, 0, 2) 82 if expander, err := factory.NewExpander(); assert.NotNil(expander) && assert.Nil(err) { 83 expanders = append(expanders, expander) 84 } 85 86 if expander, err := factory.NewExpander(fileNameParameter); assert.NotNil(expander) && assert.Nil(err) { 87 expanders = append(expanders, expander) 88 } 89 90 for _, expander := range expanders { 91 names := expander.Names() 92 assert.Len(names, 1) 93 assert.Equal(fileNameParameter, names[0]) 94 95 values := map[string]interface{}{ 96 fileNameParameter: testFile, 97 } 98 99 if loader, err := expander.Expand(values); assert.NotNil(loader) && assert.Nil(err) { 100 data, err := ReadAll(loader) 101 assert.Equal(testContents, string(data)) 102 assert.Nil(err) 103 } 104 105 loader, err := expander.Expand(123) 106 assert.Nil(loader) 107 assert.NotNil(err) 108 } 109 110 expander, err := factory.NewExpander("nosuch") 111 assert.Nil(expander) 112 assert.NotNil(err) 113 }