github.com/qlik-oss/gopherciser@v0.18.6/logger/tsvwriter_test.go (about) 1 package logger 2 3 import ( 4 "bytes" 5 "strings" 6 "testing" 7 ) 8 9 func TestTSVWriter(t *testing.T) { 10 t.Parallel() 11 12 buf := bytes.NewBufferString("") 13 14 header := []string{ 15 FieldLevel, 16 FieldAuthUser, 17 FieldAction, 18 FieldDetails, 19 FieldErrors, 20 FieldSuccess, 21 } 22 23 isClosed := false 24 tsvLogger, errTSVLogger := CreateTSVLogger(header, buf, func() error { 25 isClosed = true 26 return nil 27 }) 28 if errTSVLogger != nil { 29 t.Fatal("Failed to create TSV Logger") 30 } 31 32 // Test header 33 expectedString := strings.Join(header, "\t") + "\n" 34 verifyString(t, buf.String(), expectedString) 35 36 // Set info level 37 tsvLogger.Writer.Level(InfoLevel) 38 39 // Test rows 40 buf.Reset() 41 msg := &LogChanMsg{ 42 message{ 43 Level: InfoLevel, 44 }, 45 SessionEntry{ 46 User: "myuser1", 47 }, 48 ActionEntry{ 49 Action: "myaction", 50 }, 51 &ephemeralEntry{ 52 Details: "mydetails", 53 Errors: 12, 54 Success: true, 55 }, 56 } 57 msgs := []string{ 58 InfoLevel.String(), 59 "myuser1", 60 "myaction", 61 "mydetails", 62 "12", 63 "", 64 } 65 expectedString = strings.Join(msgs, "\t") + "\n" 66 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 67 t.Error() 68 } else { 69 verifyString(t, buf.String(), expectedString) 70 } 71 72 // Test result row 73 buf.Reset() 74 msg.Level = ResultLevel 75 msgs[0] = ResultLevel.String() 76 msgs[5] = "true" 77 expectedString = strings.Join(msgs, "\t") + "\n" 78 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 79 t.Error() 80 } else { 81 verifyString(t, buf.String(), expectedString) 82 } 83 84 // Test ErrorLevel 85 buf.Reset() 86 tsvLogger.Writer.Level(ErrorLevel) 87 msg.Level = InfoLevel 88 expectedString = "" 89 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 90 t.Error() 91 } else { 92 verifyString(t, buf.String(), expectedString) 93 } 94 95 buf.Reset() 96 msg.Level = ErrorLevel 97 msgs[0] = ErrorLevel.String() 98 msgs[5] = "" 99 expectedString = strings.Join(msgs, "\t") + "\n" 100 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 101 t.Error() 102 } else { 103 verifyString(t, buf.String(), expectedString) 104 } 105 106 // Test DebugLevel 107 buf.Reset() 108 tsvLogger.Writer.Level(InfoLevel) 109 msg.Level = DebugLevel 110 expectedString = "" 111 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 112 t.Error() 113 } else { 114 verifyString(t, buf.String(), expectedString) 115 } 116 117 tsvLogger.Writer.Level(DebugLevel) 118 msgs[0] = DebugLevel.String() 119 expectedString = strings.Join(msgs, "\t") + "\n" 120 if err := tsvLogger.Writer.WriteMessage(msg); err != nil { 121 t.Error() 122 } else { 123 verifyString(t, buf.String(), expectedString) 124 } 125 126 if err := tsvLogger.Close(); err != nil { 127 t.Error("Close failed:", err) 128 } 129 if !isClosed { 130 t.Error("Test of close function failed") 131 } 132 } 133 134 func verifyString(t *testing.T, value, expected string) { 135 t.Helper() 136 137 if value != expected { 138 t.Errorf("VerifyString failed, expected<%s> got<%s>", expected, value) 139 } 140 }