package accesslog import ( "bytes" "testing" "time" "github.com/kataras/iris/v12/core/memstore" ) func TestCSV(t *testing.T) { buf := new(bytes.Buffer) ac := New(buf) ac.RequestBody = false staticNow, _ := time.Parse(defaultTimeFormat, "1993-01-01 05:00:00") ac.Clock = TClock(staticNow) ac.SetFormatter(&CSV{ Header: true, }) lat, _ := time.ParseDuration("1s") printFunc := func() { ac.Print( nil, lat, "", 200, "GET", "/", "::1", "", "Index", 573, 81, nil, []memstore.StringEntry{{Key: "sleep", Value: "1s"}}, nil) } // print twice, the header should only be written once. printFunc() printFunc() expected := `Timestamp,Latency,Code,Method,Path,IP,Req Values,In,Out 725864400000,1s,200,GET,/,::1,sleep=1s,573,81 725864400000,1s,200,GET,/,::1,sleep=1s,573,81 ` ac.Close() if got := buf.String(); expected != got { t.Fatalf("expected:\n%s\n\nbut got:\n%s", expected, got) } }