57 lines
2.3 KiB
Go
57 lines
2.3 KiB
Go
package middleware
|
|
|
|
import "testing"
|
|
|
|
func TestShouldSkipHTTPLog(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
path string
|
|
route string
|
|
status int
|
|
latencyMs float64
|
|
wantSkip bool
|
|
}{
|
|
{name: "普通成功请求跳过", path: "/api/orders", status: 200, latencyMs: 20, wantSkip: true},
|
|
{name: "创建成功请求跳过", path: "/api/orders", status: 201, latencyMs: 30, wantSkip: true},
|
|
{name: "普通 400 跳过", path: "/api/orders", status: 400, latencyMs: 2, wantSkip: true},
|
|
{name: "普通 401 跳过", path: "/api/orders", status: 401, latencyMs: 2, wantSkip: true},
|
|
{name: "普通 404 跳过", path: "/unknown", status: 404, latencyMs: 2, wantSkip: true},
|
|
{name: "轮询 500 不跳过", path: "/api/wallet/balance", status: 500, latencyMs: 1, wantSkip: false},
|
|
{name: "限流请求不跳过", path: "/api/auth/sms", status: 429, latencyMs: 1, wantSkip: false},
|
|
{name: "慢请求不跳过", path: "/api/orders", status: 200, latencyMs: 500, wantSkip: false},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := shouldSkipHTTPLog(tt.path, tt.route, tt.status, tt.latencyMs)
|
|
if got != tt.wantSkip {
|
|
t.Fatalf("shouldSkipHTTPLog() = %v, want %v", got, tt.wantSkip)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestMeaningfulOperation(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
method string
|
|
path string
|
|
status int
|
|
want bool
|
|
}{
|
|
{name: "创建成功", method: "POST", path: "/api/orders", status: 201, want: true},
|
|
{name: "更新成功", method: "PUT", path: "/api/orders/1", status: 200, want: true},
|
|
{name: "删除成功", method: "DELETE", path: "/api/orders/1", status: 204, want: true},
|
|
{name: "普通查询", method: "GET", path: "/api/orders", status: 200, want: false},
|
|
{name: "失败写操作", method: "POST", path: "/api/orders", status: 400, want: false},
|
|
{name: "支付回调已有业务日志", method: "POST", path: "/api/payments/lakala/notify", status: 200, want: false},
|
|
{name: "支付回调尾部斜杠", method: "POST", path: "/api/payments/leshua/notify/", status: 200, want: false},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := meaningfulOperation(tt.method, tt.path, tt.status); got != tt.want {
|
|
t.Fatalf("meaningfulOperation() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|