mirror of
https://github.com/fumiama/tienyik.git
synced 2026-06-04 23:10:26 +08:00
122 lines
2.5 KiB
Go
122 lines
2.5 KiB
Go
package tienyik
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"net/url"
|
|
"testing"
|
|
)
|
|
|
|
func TestEUrlParams(t *testing.T) {
|
|
const aesplain = "moduleCode=DESKTOP_MSGCENTER"
|
|
var (
|
|
rawkey = []uint32{
|
|
2004378729, 1936745065, 1933079672, 1970627951,
|
|
842425958, 1932686949, 1903374648, 1936290669,
|
|
}
|
|
key [32]byte
|
|
)
|
|
for i, k := range rawkey {
|
|
binary.BigEndian.PutUint32(key[i*4:(i+1)*4], k)
|
|
}
|
|
t.Log(string(key[:])) // wxdispbis8txuueo26ffs2veqs18sism
|
|
tya := NewAES(key[:])
|
|
params := tya.EUrlParams(url.Values{
|
|
"moduleCode": {"DESKTOP_MSGCENTER"},
|
|
})
|
|
t.Log(params)
|
|
q, err := tya.ParseQuery(params)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for k, v := range q {
|
|
plainValue := k + "=" + v[0]
|
|
if plainValue != aesplain {
|
|
t.Fatal("expect", aesplain, "got", plainValue)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestEUrlParamsMultiple(t *testing.T) {
|
|
var (
|
|
rawkey = []uint32{
|
|
2004378729, 1936745065, 1933079672, 1970627951,
|
|
842425958, 1932686949, 1903374648, 1936290669,
|
|
}
|
|
key [32]byte
|
|
)
|
|
for i, k := range rawkey {
|
|
binary.BigEndian.PutUint32(key[i*4:(i+1)*4], k)
|
|
}
|
|
tya := NewAES(key[:])
|
|
|
|
testCases := []struct {
|
|
name string
|
|
params url.Values
|
|
expected map[string]string
|
|
}{
|
|
{
|
|
name: "single parameter",
|
|
params: url.Values{
|
|
"userId": {"12345"},
|
|
},
|
|
expected: map[string]string{
|
|
"userId": "12345",
|
|
},
|
|
},
|
|
{
|
|
name: "multiple parameters",
|
|
params: url.Values{
|
|
"userId": {"12345"},
|
|
"userName": {"testUser"},
|
|
"status": {"active"},
|
|
},
|
|
expected: map[string]string{
|
|
"userId": "12345",
|
|
"userName": "testUser",
|
|
"status": "active",
|
|
},
|
|
},
|
|
{
|
|
name: "special characters",
|
|
params: url.Values{
|
|
"email": {"test@example.com"},
|
|
"message": {"Hello World!"},
|
|
},
|
|
expected: map[string]string{
|
|
"email": "test@example.com",
|
|
"message": "Hello World!",
|
|
},
|
|
},
|
|
{
|
|
name: "chinese characters",
|
|
params: url.Values{
|
|
"name": {"张三"},
|
|
"city": {"北京"},
|
|
},
|
|
expected: map[string]string{
|
|
"name": "张三",
|
|
"city": "北京",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
params := tya.EUrlParams(tc.params)
|
|
q, err := tya.ParseQuery(params)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for key, expectedValue := range tc.expected {
|
|
if vals, ok := q[key]; ok && len(vals) > 0 {
|
|
if vals[0] != expectedValue {
|
|
t.Fatalf("key %s: expect %s, got %s", key, expectedValue, vals[0])
|
|
}
|
|
} else {
|
|
t.Fatalf("key %s not found in query", key)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|