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  }