github.com/Jeffail/benthos/v3@v3.65.0/lib/util/text/env_vars_test.go (about) 1 package text 2 3 import ( 4 "os" 5 "testing" 6 ) 7 8 func TestEnvVarDetection(t *testing.T) { 9 tests := map[string]bool{ 10 "foo ${BENTHOS_TEST_FOO:bar} baz": true, 11 "foo ${BENTHOS_TEST_FOO:} baz": false, 12 "foo ${BENTHOS_TEST_FOO} baz": true, 13 "foo ${BENTHOS_TEST_FOO} baz ${and_this}": true, 14 "foo $BENTHOS_TEST_FOO} baz $but_not_this}": false, 15 "foo ${BENTHOS_TEST_FOO baz ${or_this": false, 16 "nothing $ here boss {}": false, 17 "foo ${BENTHOS_TEST_FOO:barthisdoesntend": false, 18 "foo ${{BENTHOS_TEST_FOO:bar}} baz": true, 19 "foo ${{BENTHOS_TEST_FOO:bar} baz": false, 20 "foo ${foo.bar} baz": true, 21 "foo ${foo.bar^} baz": false, 22 "foo ${foo.bar:} baz": false, 23 "foo ${foo.bar:bar} baz": true, 24 "foo ${foo*bar} baz": false, 25 } 26 27 for in, exp := range tests { 28 act := ContainsEnvVariables([]byte(in)) 29 if act != exp { 30 t.Errorf("Wrong result for '%v': %v != %v", in, act, exp) 31 } 32 } 33 } 34 35 func TestEnvSwapping(t *testing.T) { 36 if os.Getenv("BENTHOS_TEST_FOO") != "" { 37 os.Setenv("BENTHOS_TEST_FOO", "") 38 } 39 40 os.Setenv("BENTHOS.TEST.FOO", "testfoo") 41 os.Setenv("BENTHOS.TEST.BAR", "test\nbar") 42 43 tests := map[string]string{ 44 "foo ${BENTHOS_TEST_FOO:bar} baz": "foo bar baz", 45 "foo ${BENTHOS.TEST.FOO:bar} baz": "foo testfoo baz", 46 "foo ${BENTHOS.TEST.FOO} baz": "foo testfoo baz", 47 "foo ${BENTHOS_TEST_FOO:http://bar.com} baz": "foo http://bar.com baz", 48 "foo ${BENTHOS_TEST_FOO:http://bar.com?wat=nuh} baz": "foo http://bar.com?wat=nuh baz", 49 "foo ${BENTHOS_TEST_FOO:http://bar.com#wat} baz": "foo http://bar.com#wat baz", 50 "foo ${BENTHOS_TEST_FOO:tcp://*:2020} baz": "foo tcp://*:2020 baz", 51 "foo ${BENTHOS_TEST_FOO:bar} http://bar.com baz": "foo bar http://bar.com baz", 52 "foo ${BENTHOS_TEST_FOO} http://bar.com baz": "foo http://bar.com baz", 53 "foo ${BENTHOS_TEST_FOO:wat@nuh.com} baz": "foo wat@nuh.com baz", 54 "foo ${} baz": "foo ${} baz", 55 "foo ${BENTHOS_TEST_FOO:foo,bar} baz": "foo foo,bar baz", 56 "foo ${BENTHOS_TEST_FOO} baz": "foo baz", 57 "foo ${BENTHOS_TEST_FOO:${!metadata:foo}} baz": "foo ${!metadata:foo} baz", 58 "foo ${BENTHOS_TEST_FOO:${!metadata:foo}${!metadata:bar}} baz": "foo ${!metadata:foo}${!metadata:bar} baz", 59 "foo ${BENTHOS_TEST_FOO:${!count:foo}-${!timestamp_unix_nano}.tar.gz} baz": "foo ${!count:foo}-${!timestamp_unix_nano}.tar.gz baz", 60 "foo ${{BENTHOS_TEST_FOO:bar}} baz": "foo ${BENTHOS_TEST_FOO:bar} baz", 61 "foo ${{BENTHOS_TEST_FOO}} baz": "foo ${BENTHOS_TEST_FOO} baz", 62 "foo ${BENTHOS.TEST.BAR} baz": "foo test\\nbar baz", 63 } 64 65 for in, exp := range tests { 66 out := ReplaceEnvVariables([]byte(in)) 67 if act := string(out); act != exp { 68 t.Errorf("Wrong result: %v != %v", act, exp) 69 } 70 } 71 }