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

     1  package data
     2  
     3  import (
     4  	"net/url"
     5  	"testing"
     6  
     7  	"github.com/hairyhenderson/gomplate/vault"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  func TestReadVault(t *testing.T) {
    12  	expected := "{\"value\":\"foo\"}\n"
    13  	server, v := vault.MockServer(200, `{"data":`+expected+`}`)
    14  	defer server.Close()
    15  
    16  	source := &Source{
    17  		Alias:     "foo",
    18  		URL:       &url.URL{Scheme: "vault", Path: "/secret/foo"},
    19  		mediaType: textMimetype,
    20  		vc:        v,
    21  	}
    22  
    23  	r, err := readVault(source)
    24  	assert.NoError(t, err)
    25  	assert.Equal(t, []byte(expected), r)
    26  
    27  	r, err = readVault(source, "bar")
    28  	assert.NoError(t, err)
    29  	assert.Equal(t, []byte(expected), r)
    30  
    31  	r, err = readVault(source, "?param=value")
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, []byte(expected), r)
    34  
    35  	source.URL, _ = url.Parse("vault:///secret/foo?param1=value1&param2=value2")
    36  	r, err = readVault(source)
    37  	assert.NoError(t, err)
    38  	assert.Equal(t, []byte(expected), r)
    39  
    40  	expected = "[\"one\",\"two\"]\n"
    41  	server, source.vc = vault.MockServer(200, `{"data":{"keys":`+expected+`}}`)
    42  	defer server.Close()
    43  	source.URL, _ = url.Parse("vault:///secret/foo/")
    44  	r, err = readVault(source)
    45  	assert.NoError(t, err)
    46  	assert.Equal(t, []byte(expected), r)
    47  }