github.com/epsagon/epsagon-go@v1.39.0/tracer/mask_ignored_keys_test.go (about) 1 package tracer 2 3 import ( 4 "fmt" 5 6 "github.com/epsagon/epsagon-go/protocol" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var _ = Describe("mask_ignored_keys", func() { 12 Describe("maskEventIgnoredKeys", func() { 13 config := &Config{ 14 Disable: true, 15 } 16 testTracer := CreateTracer(config).(*epsagonTracer) 17 Context("sanity", func() { 18 It("masks sanity test", func() { 19 event := &protocol.Event{ 20 Resource: &protocol.Resource{ 21 Metadata: map[string]string{ 22 "not-ignored": "hello", 23 "ignored": "bye", 24 }, 25 }, 26 } 27 ignoredKeys := []string{"ignored"} 28 testTracer.Config.IgnoredKeys = ignoredKeys 29 testTracer.maskEventIgnoredKeys(event, ignoredKeys) 30 Expect(event.Resource.Metadata["not-ignored"]).To(Equal("hello")) 31 Expect(event.Resource.Metadata["ignored"]).To(Equal(maskedValue)) 32 }) 33 }) 34 Context("test matrix", func() { 35 type testCase struct { 36 metadata map[string]string 37 ignoredKeys []string 38 expectedMetadata map[string]string 39 } 40 testMatrix := map[string]testCase{ 41 "handles empty metadata": { 42 metadata: map[string]string{}, 43 ignoredKeys: []string{"ignored"}, 44 expectedMetadata: map[string]string{}, 45 }, 46 "handles empty ignoredKeys": { 47 metadata: map[string]string{"ignored": "bye"}, 48 ignoredKeys: []string{}, 49 expectedMetadata: map[string]string{"ignored": "bye"}, 50 }, 51 "passes matrix sanity": { 52 metadata: map[string]string{"to-be-ignored": "bye", "not-ignored": "hello"}, 53 ignoredKeys: []string{"to-be-ignored"}, 54 expectedMetadata: map[string]string{"to-be-ignored": maskedValue, "not-ignored": "hello"}, 55 }, 56 "handles json map without ignored keys": { 57 metadata: map[string]string{"not-ignored": "hello", "other-not-ignored": "{\"hello\":\"world\"}"}, 58 ignoredKeys: []string{"to-be-ignored"}, 59 expectedMetadata: map[string]string{"not-ignored": "hello", "other-not-ignored": "{\"hello\":\"world\"}"}, 60 }, 61 "handles json map *with* ignored keys": { 62 metadata: map[string]string{"not-ignored": "hello", "other-not-ignored": "{\"to-be-ignored\":\"world\"}"}, 63 ignoredKeys: []string{"to-be-ignored"}, 64 expectedMetadata: map[string]string{"not-ignored": "hello", "other-not-ignored": fmt.Sprintf("{\"to-be-ignored\":\"%s\"}", maskedValue)}, 65 }, 66 "handles json nested array and map without ignored keys": { 67 metadata: map[string]string{"not-ignored": "hello", "other-not-ignored": "[{\"hello\":\"world\"},{\"erez\":\"is-cool\"}]"}, 68 ignoredKeys: []string{"to-be-ignored"}, 69 expectedMetadata: map[string]string{"not-ignored": "hello", "other-not-ignored": "[{\"hello\":\"world\"},{\"erez\":\"is-cool\"}]"}, 70 }, 71 "handles json nested array and map *with* ignored keys": { 72 metadata: map[string]string{ 73 "not-ignored": "hello", 74 "other-not-ignored": "[{\"to-be-ignored\":\"world\"},{\"erez\":\"is-cool\"}]", 75 }, 76 ignoredKeys: []string{"to-be-ignored"}, 77 expectedMetadata: map[string]string{ 78 "not-ignored": "hello", 79 "other-not-ignored": fmt.Sprintf( 80 "[{\"to-be-ignored\":\"%s\"},{\"erez\":\"is-cool\"}]", 81 maskedValue), 82 }, 83 }, 84 "handles json nested map *with* ignored keys": { 85 metadata: map[string]string{ 86 "not-ignored": "hello", 87 "other-not-ignored": "{\"wait\":{\"for\":{\"it\":{\"to-be-ignored\":\"boom\"},\"not\":[\"I\",\"are\",\"baboon\"]},\"not\":\"it\"}}", 88 }, 89 ignoredKeys: []string{"to-be-ignored"}, 90 expectedMetadata: map[string]string{ 91 "not-ignored": "hello", 92 "other-not-ignored": fmt.Sprintf( 93 "{\"wait\":{\"for\":{\"it\":{\"to-be-ignored\":\"%s\"},\"not\":[\"I\",\"are\",\"baboon\"]},\"not\":\"it\"}}", 94 maskedValue, 95 ), 96 }, 97 }, 98 } 99 for testName, value := range testMatrix { 100 value := value 101 It(testName, func() { 102 testMetadata := make(map[string]string) 103 for k, v := range value.metadata { 104 testMetadata[k] = v 105 } 106 event := &protocol.Event{ 107 Resource: &protocol.Resource{ 108 Metadata: testMetadata, 109 }, 110 } 111 testTracer.maskEventIgnoredKeys(event, value.ignoredKeys) 112 Expect(event.Resource.Metadata).To(Equal(value.expectedMetadata)) 113 }) 114 } 115 }) 116 }) 117 })