| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package middleware
- import (
- "strings"
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestMaskSensitiveJSONMasksPasswordAndTokenFields(t *testing.T) {
- body := []byte(`{"username":"admin","password":"secret123","old_password":"old","new_password":"new1","token":"jwt-token","remark":"ok","nested":{"password":"x","value":1},"items":[{"pass":"p","name":"a"}]}`)
- masked := string(maskSensitiveJSON(body))
- // 敏感字段脱敏
- require.NotContains(t, masked, "secret123")
- require.NotContains(t, masked, "jwt-token")
- require.Contains(t, masked, "******")
- // 非敏感字段保留
- require.Contains(t, masked, `"username":"admin"`)
- require.Contains(t, masked, `"remark":"ok"`)
- require.Contains(t, masked, `"value":1`)
- require.Contains(t, masked, `"name":"a"`)
- }
- func TestMaskSensitiveJSONFieldNamesCaseInsensitive(t *testing.T) {
- body := []byte(`{"Password":"UPPER","New_Password":"x"}`)
- masked := string(maskSensitiveJSON(body))
- require.NotContains(t, masked, "UPPER")
- require.Contains(t, masked, "******")
- }
- func TestMaskSensitiveJSONPassesThroughNonJSON(t *testing.T) {
- body := []byte(`not a json body`)
- require.Equal(t, string(body), string(maskSensitiveJSON(body)))
- }
- func TestMaskResponseTruncatesLongContent(t *testing.T) {
- long := strings.Repeat("x", 5000)
- // JSON 数组包裹后仍超长 → 截断标记
- resp := maskResponse(`{"data":"` + long + `"}`)
- require.Equal(t, "[超出记录长度]", resp)
- }
- func TestMaskResponseKeepsShortContent(t *testing.T) {
- resp := maskResponse(`{"code":0,"msg":"ok"}`)
- require.Equal(t, `{"code":0,"msg":"ok"}`, resp)
- }
|