gitlab.com/gitlab-org/labkit@v1.21.0/log/combined_formatter_test.go (about)

     1  package log
     2  
     3  import (
     4  	"io"
     5  	"testing"
     6  	"time"
     7  
     8  	log "github.com/sirupsen/logrus"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestAccessLogFormatter_Format(t *testing.T) {
    13  	discardLogger := log.New()
    14  	discardLogger.Out = io.Discard
    15  
    16  	tests := []struct {
    17  		name  string
    18  		entry *log.Entry
    19  		want  string
    20  	}{
    21  		{
    22  			"blank",
    23  			discardLogger.WithField("blank", ""),
    24  			"-  - - [2018/01/07:00:00:00 +0000] \"  \" 0 0 \"\" \"\" 0\n",
    25  		},
    26  		{
    27  			"full",
    28  			discardLogger.WithFields(log.Fields{
    29  				httpHostField:               "gitlab.com",
    30  				httpRemoteIPField:           "127.0.0.1",
    31  				httpRequestMethodField:      "GET",
    32  				httpURIField:                "/",
    33  				httpProtoField:              "HTTP/1.1",
    34  				httpResponseStatusCodeField: 200,
    35  				httpResponseSizeField:       100,
    36  				httpRequestReferrerField:    "http://localhost",
    37  				httpUserAgentField:          "Mozilla/1.0",
    38  				requestDurationField:        5,
    39  			}),
    40  			"gitlab.com 127.0.0.1 - - [2018/01/07:00:00:00 +0000] \"GET / HTTP/1.1\" 200 100 \"http://localhost\" \"Mozilla/1.0\" 5\n",
    41  		},
    42  	}
    43  
    44  	for _, tt := range tests {
    45  		t.Run(tt.name, func(t *testing.T) {
    46  			f := &combinedAccessLogFormatter{clock: &stubClock{time.Unix(1515283200, 0).UTC()}}
    47  
    48  			got, err := f.Format(tt.entry)
    49  			if err != nil {
    50  				t.Errorf("AccessLogFormatter.Format() error = %v", err)
    51  				return
    52  			}
    53  
    54  			assert.Equal(t, tt.want, string(got))
    55  		})
    56  	}
    57  }