- 35 endpoints across 14 files, response structs split for reuse
- Reuse RcsRecord/Node/Plan/OsInfo/UsageData across list/detail/create
- Fix source bugs: {id} path placeholders, missing / in firewall pos path,
missing body in ChargeRcsTrafic, resp vs &resp
- Add HTTPMethod_PATCH, common.BasicOperationResponse, VncConnectionInfo
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package common
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
type queryParamsSample struct {
|
|
IsRGpu *bool `json:"is_rgpu"`
|
|
Limit int `json:"limit"`
|
|
Name string `json:"name"`
|
|
Options StandQueryParameters `json:"options"`
|
|
Tags []string `json:"tags"`
|
|
Skip string `json:"-"`
|
|
NoTag string
|
|
}
|
|
|
|
func TestMarshalQueryParams(t *testing.T) {
|
|
isGPU := true
|
|
s := &queryParamsSample{
|
|
IsRGpu: &isGPU,
|
|
Limit: 10,
|
|
Name: "hello",
|
|
Options: StandQueryParameters{
|
|
Page: 2,
|
|
PerPage: 20,
|
|
},
|
|
Tags: []string{"a", "b"},
|
|
}
|
|
|
|
m, err := MarshalQueryParams(s)
|
|
if err != nil {
|
|
t.Fatalf("MarshalQueryParams() error = %v", err)
|
|
}
|
|
|
|
want := map[string]string{
|
|
"is_rgpu": "true",
|
|
"limit": "10",
|
|
"name": "hello",
|
|
"options": `{"columnFilters":{},"sort":null,"page":2,"perPage":20}`,
|
|
"tags": `["a","b"]`,
|
|
}
|
|
if !reflect.DeepEqual(m, want) {
|
|
t.Errorf("MarshalQueryParams() = %v, want %v", m, want)
|
|
}
|
|
}
|
|
|
|
func TestMarshalQueryParamsNilPtr(t *testing.T) {
|
|
s := &queryParamsSample{} // IsRGpu 为 nil
|
|
m, err := MarshalQueryParams(s)
|
|
if err != nil {
|
|
t.Fatalf("MarshalQueryParams() error = %v", err)
|
|
}
|
|
|
|
// nil 指针跳过,无 json tag 和 "-" 的字段跳过
|
|
if _, ok := m["is_rgpu"]; ok {
|
|
t.Errorf("nil 指针字段 is_rgpu 不应输出")
|
|
}
|
|
if _, ok := m["Skip"]; ok {
|
|
t.Errorf("tag 为 '-' 的字段不应输出")
|
|
}
|
|
if _, ok := m["NoTag"]; ok {
|
|
t.Errorf("无 json tag 的字段不应输出")
|
|
}
|
|
}
|
|
|
|
func TestMarshalQueryParamsNonStruct(t *testing.T) {
|
|
_, err := MarshalQueryParams(42)
|
|
if err == nil {
|
|
t.Errorf("非 struct 入参应返回错误")
|
|
}
|
|
}
|