mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 05:56:38 +08:00
bfd9de69af
Axios 默认序列化为 hosts[]=,Gin QueryArray("hosts") 读不到导致筛选失效;
后端兼容 hosts/hosts[],前端改为重复键序列化。
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package observability
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestReadQueryStringArrayAcceptsHostsBracketForm(t *testing.T) {
|
|
gin.SetMode(gin.TestMode)
|
|
|
|
cases := []struct {
|
|
name string
|
|
url string
|
|
want []string
|
|
}{
|
|
{
|
|
name: "axios brackets form",
|
|
url: "/overview?hours=168&hosts%5B%5D=gist.arctel.de",
|
|
want: []string{"gist.arctel.de"},
|
|
},
|
|
{
|
|
name: "repeated hosts keys",
|
|
url: "/overview?hosts=a.example&hosts=b.example",
|
|
want: []string{"a.example", "b.example"},
|
|
},
|
|
{
|
|
name: "single hosts key",
|
|
url: "/overview?hosts=gist.arctel.de",
|
|
want: []string{"gist.arctel.de"},
|
|
},
|
|
{
|
|
name: "empty",
|
|
url: "/overview?hours=24",
|
|
want: nil,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
w := httptest.NewRecorder()
|
|
c, _ := gin.CreateTestContext(w)
|
|
req, err := http.NewRequest(http.MethodGet, tc.url, nil)
|
|
require.NoError(t, err)
|
|
c.Request = req
|
|
|
|
got := readQueryStringArray(c, "hosts")
|
|
require.Equal(t, tc.want, got)
|
|
})
|
|
}
|
|
}
|