github.com/qlik-oss/gopherciser@v0.18.6/logger/jsonwriter_test.go (about)

     1  package logger
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  )
     7  
     8  func TestJsonWriter(t *testing.T) {
     9  	t.Parallel()
    10  
    11  	buf := bytes.NewBufferString("")
    12  
    13  	isClosed := false
    14  	jsonLogger := CreateJSONLogger(buf, func() error {
    15  		isClosed = true
    16  		return nil
    17  	})
    18  
    19  	// Set info level
    20  	jsonLogger.Writer.Level(InfoLevel)
    21  
    22  	msg := &LogChanMsg{
    23  		message{
    24  			Level: InfoLevel,
    25  		},
    26  		SessionEntry{
    27  			User: "myuser1",
    28  		},
    29  		ActionEntry{
    30  			Action: "myaction",
    31  		},
    32  		&ephemeralEntry{
    33  			Details: "mydetails",
    34  			Errors:  12,
    35  			Success: true,
    36  		},
    37  	}
    38  
    39  	// Test rows
    40  	expectedString := `{"zerologlevel":"info","AppName":"","AppGUID":"","Session":0,"SessionName":"","Thread":0,"User":"myuser1","Action":"myaction","ActionId":0,"Label":"","ObjectType":"","Details":"mydetails","Errors":12,"InfoType":"","Received":0,"RequestsSent":0,"Sent":0,"Stack":"","Warnings":0,"ResponseTime":0,"level":"info","Tick":0,"time":"0001-01-01T00:00:00Z","timestamp":"0001-01-01T00:00:00Z"}`
    41  	expectedString += "\n"
    42  	if err := jsonLogger.Writer.WriteMessage(msg); err != nil {
    43  		t.Error()
    44  	} else {
    45  		verifyString(t, buf.String(), expectedString)
    46  	}
    47  
    48  	// Test ErrorLevel
    49  	buf.Reset()
    50  	jsonLogger.Writer.Level(ErrorLevel)
    51  	expectedString = ""
    52  	if err := jsonLogger.Writer.WriteMessage(msg); err != nil {
    53  		t.Error()
    54  	} else {
    55  		verifyString(t, buf.String(), expectedString)
    56  	}
    57  
    58  	buf.Reset()
    59  	msg.Level = ErrorLevel
    60  	expectedString = `{"zerologlevel":"error","AppName":"","AppGUID":"","Session":0,"SessionName":"","Thread":0,"User":"myuser1","Action":"myaction","ActionId":0,"Label":"","ObjectType":"","Details":"mydetails","Errors":12,"InfoType":"","Received":0,"RequestsSent":0,"Sent":0,"Stack":"","Warnings":0,"ResponseTime":0,"level":"error","Tick":0,"time":"0001-01-01T00:00:00Z","timestamp":"0001-01-01T00:00:00Z"}`
    61  	expectedString += "\n"
    62  	if err := jsonLogger.Writer.WriteMessage(msg); err != nil {
    63  		t.Error()
    64  	} else {
    65  		verifyString(t, buf.String(), expectedString)
    66  	}
    67  
    68  	// Test DebugLevel
    69  	buf.Reset()
    70  	jsonLogger.Writer.Level(InfoLevel)
    71  	msg.Level = DebugLevel
    72  	expectedString = ""
    73  	if err := jsonLogger.Writer.WriteMessage(msg); err != nil {
    74  		t.Error()
    75  	} else {
    76  		verifyString(t, buf.String(), expectedString)
    77  	}
    78  
    79  	buf.Reset()
    80  	jsonLogger.Writer.Level(DebugLevel)
    81  	expectedString = `{"zerologlevel":"debug","AppName":"","AppGUID":"","Session":0,"SessionName":"","Thread":0,"User":"myuser1","Action":"myaction","ActionId":0,"Label":"","ObjectType":"","Details":"mydetails","Errors":12,"InfoType":"","Received":0,"RequestsSent":0,"Sent":0,"Stack":"","Warnings":0,"ResponseTime":0,"level":"debug","Tick":0,"time":"0001-01-01T00:00:00Z","timestamp":"0001-01-01T00:00:00Z"}`
    82  	expectedString += "\n"
    83  	if err := jsonLogger.Writer.WriteMessage(msg); err != nil {
    84  		t.Error()
    85  	} else {
    86  		verifyString(t, buf.String(), expectedString)
    87  	}
    88  
    89  	// Test close function
    90  	if err := jsonLogger.Close(); err != nil {
    91  		t.Error("Close failed:", err)
    92  	}
    93  	if !isClosed {
    94  		t.Error("Test of close function failed")
    95  	}
    96  }