github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/operator/helper/expr_string_test.go (about) 1 package helper 2 3 import ( 4 "os" 5 "strconv" 6 "testing" 7 8 "github.com/observiq/carbon/entry" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestExprString(t *testing.T) { 13 os.Setenv("TEST_EXPR_STRING_ENV", "foo") 14 defer os.Unsetenv("TEST_EXPR_STRING_ENV") 15 16 exampleEntry := func() *entry.Entry { 17 e := entry.New() 18 e.Record = map[string]interface{}{ 19 "test": "value", 20 } 21 e.Resource = map[string]string{ 22 "id": "value", 23 } 24 return e 25 } 26 27 cases := []struct { 28 config ExprStringConfig 29 expected string 30 }{ 31 { 32 "test", 33 "test", 34 }, 35 { 36 "EXPR( 'test' )", 37 "test", 38 }, 39 { 40 "prefix-EXPR( 'test' )", 41 "prefix-test", 42 }, 43 { 44 "prefix-EXPR('test')-suffix", 45 "prefix-test-suffix", 46 }, 47 { 48 "prefix-EXPR('test')-suffix-EXPR('test2' + 'test3')", 49 "prefix-test-suffix-test2test3", 50 }, 51 { 52 "EXPR('test' )EXPR('asdf')", 53 "testasdf", 54 }, 55 { 56 "EXPR", 57 "EXPR", 58 }, 59 { 60 "EXPR(", 61 "EXPR(", 62 }, 63 { 64 ")EXPR(", 65 ")EXPR(", 66 }, 67 { 68 "my EXPR( $.test )", 69 "my value", 70 }, 71 { 72 "my EXPR($.test )", 73 "my value", 74 }, 75 { 76 "my EXPR($.test)", 77 "my value", 78 }, 79 { 80 "my EXPR(env('TEST_EXPR_STRING_ENV'))", 81 "my foo", 82 }, 83 { 84 "EXPR( $resource.id )", 85 "value", 86 }, 87 } 88 89 for i, tc := range cases { 90 t.Run(strconv.Itoa(i), func(t *testing.T) { 91 exprString, err := tc.config.Build() 92 require.NoError(t, err) 93 94 env := GetExprEnv(exampleEntry()) 95 defer PutExprEnv(env) 96 97 result, err := exprString.Render(env) 98 require.NoError(t, err) 99 require.Equal(t, tc.expected, result) 100 }) 101 } 102 }