github.com/evdatsion/aphelion-dpos-bft@v0.32.1/libs/log/filter_test.go (about) 1 package log_test 2 3 import ( 4 "bytes" 5 "strings" 6 "testing" 7 8 "github.com/evdatsion/aphelion-dpos-bft/libs/log" 9 ) 10 11 func TestVariousLevels(t *testing.T) { 12 testCases := []struct { 13 name string 14 allowed log.Option 15 want string 16 }{ 17 { 18 "AllowAll", 19 log.AllowAll(), 20 strings.Join([]string{ 21 `{"_msg":"here","level":"debug","this is":"debug log"}`, 22 `{"_msg":"here","level":"info","this is":"info log"}`, 23 `{"_msg":"here","level":"error","this is":"error log"}`, 24 }, "\n"), 25 }, 26 { 27 "AllowDebug", 28 log.AllowDebug(), 29 strings.Join([]string{ 30 `{"_msg":"here","level":"debug","this is":"debug log"}`, 31 `{"_msg":"here","level":"info","this is":"info log"}`, 32 `{"_msg":"here","level":"error","this is":"error log"}`, 33 }, "\n"), 34 }, 35 { 36 "AllowInfo", 37 log.AllowInfo(), 38 strings.Join([]string{ 39 `{"_msg":"here","level":"info","this is":"info log"}`, 40 `{"_msg":"here","level":"error","this is":"error log"}`, 41 }, "\n"), 42 }, 43 { 44 "AllowError", 45 log.AllowError(), 46 strings.Join([]string{ 47 `{"_msg":"here","level":"error","this is":"error log"}`, 48 }, "\n"), 49 }, 50 { 51 "AllowNone", 52 log.AllowNone(), 53 ``, 54 }, 55 } 56 57 for _, tc := range testCases { 58 t.Run(tc.name, func(t *testing.T) { 59 var buf bytes.Buffer 60 logger := log.NewFilter(log.NewTMJSONLogger(&buf), tc.allowed) 61 62 logger.Debug("here", "this is", "debug log") 63 logger.Info("here", "this is", "info log") 64 logger.Error("here", "this is", "error log") 65 66 if want, have := tc.want, strings.TrimSpace(buf.String()); want != have { 67 t.Errorf("\nwant:\n%s\nhave:\n%s", want, have) 68 } 69 }) 70 } 71 } 72 73 func TestLevelContext(t *testing.T) { 74 var buf bytes.Buffer 75 76 logger := log.NewTMJSONLogger(&buf) 77 logger = log.NewFilter(logger, log.AllowError()) 78 logger = logger.With("context", "value") 79 80 logger.Error("foo", "bar", "baz") 81 if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"error"}`, strings.TrimSpace(buf.String()); want != have { 82 t.Errorf("\nwant '%s'\nhave '%s'", want, have) 83 } 84 85 buf.Reset() 86 logger.Info("foo", "bar", "baz") 87 if want, have := ``, strings.TrimSpace(buf.String()); want != have { 88 t.Errorf("\nwant '%s'\nhave '%s'", want, have) 89 } 90 } 91 92 func TestVariousAllowWith(t *testing.T) { 93 var buf bytes.Buffer 94 95 logger := log.NewTMJSONLogger(&buf) 96 97 logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value")) 98 logger1.With("context", "value").Info("foo", "bar", "baz") 99 if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"info"}`, strings.TrimSpace(buf.String()); want != have { 100 t.Errorf("\nwant '%s'\nhave '%s'", want, have) 101 } 102 103 buf.Reset() 104 105 logger2 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"), log.AllowNoneWith("user", "Sam")) 106 logger2.With("context", "value", "user", "Sam").Info("foo", "bar", "baz") 107 if want, have := ``, strings.TrimSpace(buf.String()); want != have { 108 t.Errorf("\nwant '%s'\nhave '%s'", want, have) 109 } 110 111 buf.Reset() 112 113 logger3 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"), log.AllowNoneWith("user", "Sam")) 114 logger3.With("user", "Sam").With("context", "value").Info("foo", "bar", "baz") 115 if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"info","user":"Sam"}`, strings.TrimSpace(buf.String()); want != have { 116 t.Errorf("\nwant '%s'\nhave '%s'", want, have) 117 } 118 }