github.com/orangenpresse/up@v0.6.0/internal/logs/writer/writer_test.go (about)

     1  package writer
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"strings"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/apex/log"
    11  	"github.com/apex/log/handlers/json"
    12  	"github.com/tj/assert"
    13  )
    14  
    15  func init() {
    16  	log.Now = func() time.Time {
    17  		return time.Unix(0, 0).UTC()
    18  	}
    19  }
    20  
    21  func TestWriter_plainTextFlat(t *testing.T) {
    22  	var buf bytes.Buffer
    23  
    24  	log.SetHandler(json.New(&buf))
    25  
    26  	w := New(log.InfoLevel, log.Log)
    27  
    28  	input := `GET /
    29  GET /account
    30  GET /login
    31  POST /
    32  POST /logout
    33  `
    34  
    35  	_, err := io.Copy(w, strings.NewReader(input))
    36  	assert.NoError(t, err, "copy")
    37  
    38  	expected := `{"fields":{},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"GET /"}
    39  {"fields":{},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"GET /account"}
    40  {"fields":{},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"GET /login"}
    41  {"fields":{},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"POST /"}
    42  {"fields":{},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"POST /logout"}
    43  `
    44  
    45  	assert.Equal(t, expected, buf.String())
    46  }
    47  
    48  func TestWriter_json(t *testing.T) {
    49  	var buf bytes.Buffer
    50  
    51  	log.SetHandler(json.New(&buf))
    52  
    53  	w := New(log.InfoLevel, log.Log)
    54  
    55  	input := `{ "level": "info", "message": "request", "fields": { "method": "GET", "path": "/" } }
    56  { "level": "info", "message": "request", "fields": { "method": "GET", "path": "/login" } }
    57  { "level": "info", "message": "request", "fields": { "method": "POST", "path": "/login" } }
    58  `
    59  
    60  	_, err := io.Copy(w, strings.NewReader(input))
    61  	assert.NoError(t, err, "copy")
    62  
    63  	expected := `{"fields":{"method":"GET","path":"/"},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"request"}
    64  {"fields":{"method":"GET","path":"/login"},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"request"}
    65  {"fields":{"method":"POST","path":"/login"},"level":"info","timestamp":"1970-01-01T00:00:00Z","message":"request"}
    66  `
    67  
    68  	assert.Equal(t, expected, buf.String())
    69  }