mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-09-18 14:14:53 +08:00
fix(api): 补齐 bat-api 控制与后端 RPC
This commit is contained in:
@@ -88,6 +88,120 @@ func TestResourceRepairQueuesTask(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDaemonRestartSendsControlMethod(t *testing.T) {
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "daemon.restart" {
|
||||
t.Fatalf("method = %s", req.Method)
|
||||
}
|
||||
return testResponse{
|
||||
Result: testEnvelope{
|
||||
OK: true,
|
||||
Status: "accepted",
|
||||
RequestID: "req-test-restart",
|
||||
Data: map[string]any{
|
||||
"command": "restart",
|
||||
"status": "accepted",
|
||||
"message": "restart accepted",
|
||||
"state_dir": "/tmp/bat-pid",
|
||||
"socket_path": "/tmp/bat-pid/bat.sock",
|
||||
"controller_pid": 4242,
|
||||
},
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
ack, err := client.DaemonRestart(context.Background())
|
||||
if err != nil {
|
||||
t.Fatalf("DaemonRestart error: %v", err)
|
||||
}
|
||||
if ack.Command != "restart" || ack.ControllerPID == nil || *ack.ControllerPID != 4242 {
|
||||
t.Fatalf("unexpected ack: %#v", ack)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTextUnitsSendsQuery(t *testing.T) {
|
||||
pathID := int64(7)
|
||||
classID := 114
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "parse.text_units" {
|
||||
t.Fatalf("method = %s", req.Method)
|
||||
}
|
||||
var params TextUnitQueryParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode params: %v", err)
|
||||
}
|
||||
if params.Offset != 3 || params.Limit != 5 || params.Destination != "*Table*" || params.PathID == nil || *params.PathID != pathID || params.ClassID == nil || *params.ClassID != classID {
|
||||
t.Fatalf("params = %#v", params)
|
||||
}
|
||||
return testResponse{
|
||||
Result: testEnvelope{
|
||||
OK: true,
|
||||
Status: "ok",
|
||||
RequestID: "req-test-parse",
|
||||
Data: map[string]any{
|
||||
"available": true,
|
||||
"entries": []any{},
|
||||
},
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
raw, err := client.ParseTextUnits(context.Background(), TextUnitQueryParams{
|
||||
Offset: 3,
|
||||
Limit: 5,
|
||||
Destination: "*Table*",
|
||||
PathID: &pathID,
|
||||
ClassID: &classID,
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("ParseTextUnits error: %v", err)
|
||||
}
|
||||
if !json.Valid(raw) {
|
||||
t.Fatalf("invalid raw JSON: %s", string(raw))
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnityFSPatchFieldSendsTaggedReplacement(t *testing.T) {
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "unityfs.patch_field" {
|
||||
t.Fatalf("method = %s", req.Method)
|
||||
}
|
||||
var params UnityFSFieldPatchParams
|
||||
if err := json.Unmarshal(req.Params, ¶ms); err != nil {
|
||||
t.Fatalf("decode params: %v", err)
|
||||
}
|
||||
if params.BundlePath != "/tmp/source.bundle" || params.FieldPath != "m_Name" || string(params.Replacement) != `{"kind":"string","value":"new text"}` {
|
||||
t.Fatalf("params = %#v replacement=%s", params, string(params.Replacement))
|
||||
}
|
||||
return testResponse{
|
||||
Result: testEnvelope{
|
||||
OK: true,
|
||||
Status: "ok",
|
||||
RequestID: "req-test-unityfs",
|
||||
Data: map[string]any{
|
||||
"command": "unityfs.patch_field",
|
||||
"status": "completed",
|
||||
},
|
||||
},
|
||||
}
|
||||
})
|
||||
|
||||
raw, err := client.UnityFSPatchField(context.Background(), UnityFSFieldPatchParams{
|
||||
BundlePath: "/tmp/source.bundle",
|
||||
SerializedFilePath: "CAB-test",
|
||||
PathID: 1,
|
||||
FieldPath: "m_Name",
|
||||
Replacement: json.RawMessage(`{"kind":"string","value":"new text"}`),
|
||||
TargetPath: "/tmp/target.bundle",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("UnityFSPatchField error: %v", err)
|
||||
}
|
||||
if !json.Valid(raw) {
|
||||
t.Fatalf("invalid raw JSON: %s", string(raw))
|
||||
}
|
||||
}
|
||||
|
||||
func TestResourceListSendsPagination(t *testing.T) {
|
||||
client := newTestClient(t, func(t *testing.T, req testRequest) testResponse {
|
||||
if req.Method != "resource.list" {
|
||||
|
||||
Reference in New Issue
Block a user