74 lines
1.7 KiB
Go
74 lines
1.7 KiB
Go
package reader
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestReplaceEnvVars(t *testing.T) {
|
|
os.Setenv("myBar", "cat")
|
|
os.Setenv("MYBAR", "cat")
|
|
os.Setenv("my_Bar", "cat")
|
|
os.Setenv("myBar_", "cat")
|
|
|
|
testData := []struct {
|
|
expected string
|
|
data []byte
|
|
}{
|
|
// Right use cases
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "cat"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${myBar}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "cat"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${MYBAR}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "cat"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${my_Bar}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "cat"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${myBar_}"}}`),
|
|
},
|
|
// Wrong use cases
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "${myBar-}"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${myBar-}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "${}"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "$sss}"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "$sss}"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "${sss"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "${sss"}}`),
|
|
},
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "{something}"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "{something}"}}`),
|
|
},
|
|
// Use cases without replace env vars
|
|
{
|
|
`{"foo": "bar", "baz": {"bar": "cat"}}`,
|
|
[]byte(`{"foo": "bar", "baz": {"bar": "cat"}}`),
|
|
},
|
|
}
|
|
|
|
for _, test := range testData {
|
|
res, err := ReplaceEnvVars(test.data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if strings.Compare(test.expected, string(res)) != 0 {
|
|
t.Fatalf("Expected %s got %s", test.expected, res)
|
|
}
|
|
}
|
|
}
|