Files
magpie/internal/gui/aside_native_test.go
Junjie Zhou 4a97acf12a refactor(agent): separate Aside provider connection from model settings (#827)
* refactor(agent): connect Aside as a native provider with verified settings

* fix(agent): offer explicit offline Aside model and disconnect actions

Offer Save for next start after an initial runtime read failure, using a
structured API error instead of saved runtime state. Keep refusals and
failed readbacks on the live error path.

Add a separate offline disconnect confirmation that restores the checked
file plan, clears restore records and removes the provider last. Bind the
confirmation to its preview revision and roll back ordinary write failures.

Cover offline API and browser flows, cancellation, stale plans, missing
CLI, restore metadata and native provider spelling. Keep state file-only.
2026-10-05 14:37:44 +08:00

60 lines
1.6 KiB
Go

package gui
import (
"encoding/json"
"net/http/httptest"
"os"
"path/filepath"
"strings"
"testing"
)
func TestAsideConnectAPIKeepsNativeSelections(t *testing.T) {
home := t.TempDir()
t.Setenv("HOME", home)
t.Setenv("USERPROFILE", home)
t.Setenv("XDG_CONFIG_HOME", filepath.Join(home, ".config"))
t.Setenv("XDG_CACHE_HOME", filepath.Join(home, ".cache"))
dir := filepath.Join(home, ".aside", "u", "0")
if err := os.MkdirAll(dir, 0o700); err != nil {
t.Fatal(err)
}
path := filepath.Join(dir, "settings.json")
before := `{"defaultModel":{"provider":"minimax","modelId":"native","thinkingLevel":"high","fastMode":false},"imageGenerationModel":null}`
if err := os.WriteFile(path, []byte(before), 0o600); err != nil {
t.Fatal(err)
}
h := Handler(nil, nil)
call := func(path string) agentJSON {
t.Helper()
rec := httptest.NewRecorder()
h.ServeHTTP(rec, httptest.NewRequest("POST", path, strings.NewReader("{}")))
if rec.Code != 200 {
t.Fatalf("%s: %d %s", path, rec.Code, rec.Body)
}
var s stateJSON
if err := json.Unmarshal(rec.Body.Bytes(), &s); err != nil {
t.Fatal(err)
}
for _, a := range s.Agents {
if a.ID == "aside" {
return a
}
}
t.Fatal("Aside missing")
return agentJSON{}
}
a := call("/api/agents/connect/aside")
if !a.Wired || a.Native == nil || a.Native.Provider != "connected" || a.Fields[0].Value != "minimax/native" {
t.Fatalf("connect state %+v", a)
}
b, _ := os.ReadFile(path)
if string(b) != before {
t.Fatal("connect changed native selection")
}
a = call("/api/agents/disconnect/aside")
if a.Wired || a.Fields[0].Value != "minimax/native" {
t.Fatalf("disconnect state %+v", a)
}
}