mirror of
https://github.com/yusing/godoxy.git
synced 2026-04-23 09:18:51 +02:00
improved deserialization method
This commit is contained in:
@@ -59,9 +59,9 @@ func fmtLog(cfg *Config) string {
|
||||
}
|
||||
|
||||
func TestAccessLoggerCommon(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Format = FormatCommon
|
||||
ExpectEqual(t, fmtLog(&config),
|
||||
ExpectEqual(t, fmtLog(config),
|
||||
fmt.Sprintf("%s %s - - [%s] \"%s %s %s\" %d %d",
|
||||
host, remote, TestTimeNow, method, uri, proto, status, contentLength,
|
||||
),
|
||||
@@ -69,9 +69,9 @@ func TestAccessLoggerCommon(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerCombined(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Format = FormatCombined
|
||||
ExpectEqual(t, fmtLog(&config),
|
||||
ExpectEqual(t, fmtLog(config),
|
||||
fmt.Sprintf("%s %s - - [%s] \"%s %s %s\" %d %d \"%s\" \"%s\"",
|
||||
host, remote, TestTimeNow, method, uri, proto, status, contentLength, referer, ua,
|
||||
),
|
||||
@@ -79,10 +79,10 @@ func TestAccessLoggerCombined(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerRedactQuery(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Format = FormatCommon
|
||||
config.Fields.Query.DefaultMode = FieldModeRedact
|
||||
ExpectEqual(t, fmtLog(&config),
|
||||
ExpectEqual(t, fmtLog(config),
|
||||
fmt.Sprintf("%s %s - - [%s] \"%s %s %s\" %d %d",
|
||||
host, remote, TestTimeNow, method, uriRedacted, proto, status, contentLength,
|
||||
),
|
||||
@@ -99,8 +99,8 @@ func getJSONEntry(t *testing.T, config *Config) JSONLogEntry {
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSON(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
entry := getJSONEntry(t, &config)
|
||||
config := DefaultConfig()
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectEqual(t, entry.IP, remote)
|
||||
ExpectEqual(t, entry.Method, method)
|
||||
ExpectEqual(t, entry.Scheme, "http")
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package accesslog
|
||||
|
||||
import "github.com/yusing/go-proxy/internal/utils"
|
||||
|
||||
type (
|
||||
Format string
|
||||
Filters struct {
|
||||
@@ -30,18 +32,24 @@ var (
|
||||
|
||||
const DefaultBufferSize = 100
|
||||
|
||||
var DefaultConfig = Config{
|
||||
BufferSize: DefaultBufferSize,
|
||||
Format: FormatCombined,
|
||||
Fields: Fields{
|
||||
Headers: FieldConfig{
|
||||
DefaultMode: FieldModeDrop,
|
||||
func DefaultConfig() *Config {
|
||||
return &Config{
|
||||
BufferSize: DefaultBufferSize,
|
||||
Format: FormatCombined,
|
||||
Fields: Fields{
|
||||
Headers: FieldConfig{
|
||||
DefaultMode: FieldModeDrop,
|
||||
},
|
||||
Query: FieldConfig{
|
||||
DefaultMode: FieldModeKeep,
|
||||
},
|
||||
Cookies: FieldConfig{
|
||||
DefaultMode: FieldModeDrop,
|
||||
},
|
||||
},
|
||||
Query: FieldConfig{
|
||||
DefaultMode: FieldModeKeep,
|
||||
},
|
||||
Cookies: FieldConfig{
|
||||
DefaultMode: FieldModeDrop,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
utils.RegisterDefaultValueFactory(DefaultConfig)
|
||||
}
|
||||
|
||||
@@ -10,9 +10,9 @@ import (
|
||||
// Cookie header should be removed,
|
||||
// stored in JSONLogEntry.Cookies instead.
|
||||
func TestAccessLoggerJSONKeepHeaders(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Headers.DefaultMode = FieldModeKeep
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, len(entry.Headers["Cookie"]), 0)
|
||||
for k, v := range req.Header {
|
||||
if k != "Cookie" {
|
||||
@@ -22,9 +22,9 @@ func TestAccessLoggerJSONKeepHeaders(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSONRedactHeaders(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Headers.DefaultMode = FieldModeRedact
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, len(entry.Headers["Cookie"]), 0)
|
||||
for k := range req.Header {
|
||||
if k != "Cookie" {
|
||||
@@ -34,10 +34,10 @@ func TestAccessLoggerJSONRedactHeaders(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSONKeepCookies(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Headers.DefaultMode = FieldModeKeep
|
||||
config.Fields.Cookies.DefaultMode = FieldModeKeep
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, len(entry.Headers["Cookie"]), 0)
|
||||
for _, cookie := range req.Cookies() {
|
||||
ExpectEqual(t, entry.Cookies[cookie.Name], cookie.Value)
|
||||
@@ -45,10 +45,10 @@ func TestAccessLoggerJSONKeepCookies(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSONRedactCookies(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Headers.DefaultMode = FieldModeKeep
|
||||
config.Fields.Cookies.DefaultMode = FieldModeRedact
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, len(entry.Headers["Cookie"]), 0)
|
||||
for _, cookie := range req.Cookies() {
|
||||
ExpectEqual(t, entry.Cookies[cookie.Name], RedactedValue)
|
||||
@@ -56,17 +56,17 @@ func TestAccessLoggerJSONRedactCookies(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSONDropQuery(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Query.DefaultMode = FieldModeDrop
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, entry.Query["foo"], nil)
|
||||
ExpectDeepEqual(t, entry.Query["bar"], nil)
|
||||
}
|
||||
|
||||
func TestAccessLoggerJSONRedactQuery(t *testing.T) {
|
||||
config := DefaultConfig
|
||||
config := DefaultConfig()
|
||||
config.Fields.Query.DefaultMode = FieldModeRedact
|
||||
entry := getJSONEntry(t, &config)
|
||||
entry := getJSONEntry(t, config)
|
||||
ExpectDeepEqual(t, entry.Query["foo"], []string{RedactedValue})
|
||||
ExpectDeepEqual(t, entry.Query["bar"], []string{RedactedValue})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user