mirror of
				https://github.com/traefik/traefik.git
				synced 2025-10-31 08:21:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package accesslog
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestParseAccessLog(t *testing.T) {
 | |
| 	testCases := []struct {
 | |
| 		desc     string
 | |
| 		value    string
 | |
| 		expected map[string]string
 | |
| 	}{
 | |
| 		{
 | |
| 			desc:  "full log",
 | |
| 			value: `TestHost - TestUser [13/Apr/2016:07:14:19 -0700] "POST testpath HTTP/0.0" 123 12 "testReferer" "testUserAgent" 1 "testRouter" "http://127.0.0.1/testService" 1ms`,
 | |
| 			expected: map[string]string{
 | |
| 				ClientHost:             "TestHost",
 | |
| 				ClientUsername:         "TestUser",
 | |
| 				StartUTC:               "13/Apr/2016:07:14:19 -0700",
 | |
| 				RequestMethod:          "POST",
 | |
| 				RequestPath:            "testpath",
 | |
| 				RequestProtocol:        "HTTP/0.0",
 | |
| 				OriginStatus:           "123",
 | |
| 				OriginContentSize:      "12",
 | |
| 				RequestRefererHeader:   `"testReferer"`,
 | |
| 				RequestUserAgentHeader: `"testUserAgent"`,
 | |
| 				RequestCount:           "1",
 | |
| 				RouterName:             `"testRouter"`,
 | |
| 				ServiceURL:             `"http://127.0.0.1/testService"`,
 | |
| 				Duration:               "1ms",
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc:  "log with space",
 | |
| 			value: `127.0.0.1 - - [09/Mar/2018:10:51:32 +0000] "GET / HTTP/1.1" 401 17 "-" "Go-http-client/1.1" 1 "testRouter with space" - 0ms`,
 | |
| 			expected: map[string]string{
 | |
| 				ClientHost:             "127.0.0.1",
 | |
| 				ClientUsername:         "-",
 | |
| 				StartUTC:               "09/Mar/2018:10:51:32 +0000",
 | |
| 				RequestMethod:          "GET",
 | |
| 				RequestPath:            "/",
 | |
| 				RequestProtocol:        "HTTP/1.1",
 | |
| 				OriginStatus:           "401",
 | |
| 				OriginContentSize:      "17",
 | |
| 				RequestRefererHeader:   `"-"`,
 | |
| 				RequestUserAgentHeader: `"Go-http-client/1.1"`,
 | |
| 				RequestCount:           "1",
 | |
| 				RouterName:             `"testRouter with space"`,
 | |
| 				ServiceURL:             `-`,
 | |
| 				Duration:               "0ms",
 | |
| 			},
 | |
| 		},
 | |
| 		{
 | |
| 			desc:     "bad log",
 | |
| 			value:    `bad`,
 | |
| 			expected: map[string]string{},
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	for _, test := range testCases {
 | |
| 		t.Run(test.desc, func(t *testing.T) {
 | |
| 			t.Parallel()
 | |
| 
 | |
| 			result, err := ParseAccessLog(test.value)
 | |
| 			assert.NoError(t, err)
 | |
| 			assert.Equal(t, len(test.expected), len(result))
 | |
| 			for key, value := range test.expected {
 | |
| 				assert.Equal(t, value, result[key])
 | |
| 			}
 | |
| 		})
 | |
| 	}
 | |
| }
 |