github.com/wynshop-open-source/gomplate@v3.5.0+incompatible/data/datasource_env_test.go (about)

     1  package data
     2  
     3  import (
     4  	"net/url"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func mustParseURL(in string) *url.URL {
    12  	u, _ := url.Parse(in)
    13  	return u
    14  }
    15  
    16  func TestReadEnv(t *testing.T) {
    17  	content := []byte(`hello world`)
    18  	os.Setenv("HELLO_WORLD", "hello world")
    19  	defer os.Unsetenv("HELLO_WORLD")
    20  	os.Setenv("HELLO_UNIVERSE", "hello universe")
    21  	defer os.Unsetenv("HELLO_UNIVERSE")
    22  
    23  	source := &Source{Alias: "foo", URL: mustParseURL("env:HELLO_WORLD")}
    24  
    25  	actual, err := readEnv(source)
    26  	assert.NoError(t, err)
    27  	assert.Equal(t, content, actual)
    28  
    29  	source = &Source{Alias: "foo", URL: mustParseURL("env:/HELLO_WORLD")}
    30  
    31  	actual, err = readEnv(source)
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, content, actual)
    34  
    35  	source = &Source{Alias: "foo", URL: mustParseURL("env:///HELLO_WORLD")}
    36  
    37  	actual, err = readEnv(source)
    38  	assert.NoError(t, err)
    39  	assert.Equal(t, content, actual)
    40  
    41  	source = &Source{Alias: "foo", URL: mustParseURL("env:HELLO_WORLD?foo=bar")}
    42  
    43  	actual, err = readEnv(source)
    44  	assert.NoError(t, err)
    45  	assert.Equal(t, content, actual)
    46  
    47  	source = &Source{Alias: "foo", URL: mustParseURL("env:///HELLO_WORLD?foo=bar")}
    48  
    49  	actual, err = readEnv(source)
    50  	assert.NoError(t, err)
    51  	assert.Equal(t, content, actual)
    52  }