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¶m2=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 }