Files
tutti/apps/cli/internal/app/managed_model_test.go
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

80 lines
2.7 KiB
Go

package app
import (
"encoding/json"
"io"
"os"
"path/filepath"
"strings"
"testing"
)
func TestParseManagedModelExchangeInput(t *testing.T) {
previous := managedModelInputReader
managedModelInputReader = func() io.Reader {
return strings.NewReader(`{"contextToken":"context-1","grantCode":"code-1","nonce":"nonce-1","state":"state-1"}`)
}
t.Cleanup(func() { managedModelInputReader = previous })
commandID, input, err := parseManagedModelInput([]string{"grant", "exchange", "--input-json", "-"})
if err != nil {
t.Fatalf("parseManagedModelInput: %v", err)
}
if commandID != managedModelExchangeCommandID {
t.Fatalf("commandID = %q", commandID)
}
if input["grantCode"] != "code-1" || input["contextToken"] != "context-1" {
t.Fatalf("input = %#v", input)
}
}
func TestManagedModelProtocolFixtureParsesExchangeInput(t *testing.T) {
raw, err := os.ReadFile(filepath.Join("..", "..", "..", "..", "packages", "appcli", "core", "testdata", "managed-model", "protocol.v1.json"))
if err != nil {
t.Fatal(err)
}
var fixture struct {
Commands map[string]struct {
Input json.RawMessage `json:"input"`
} `json:"commands"`
}
if err := json.Unmarshal(raw, &fixture); err != nil {
t.Fatal(err)
}
previous := managedModelInputReader
managedModelInputReader = func() io.Reader {
return strings.NewReader(string(fixture.Commands[managedModelExchangeCommandID].Input))
}
t.Cleanup(func() { managedModelInputReader = previous })
commandID, input, err := parseManagedModelInput([]string{"grant", "exchange", "--input-json", "-"})
if err != nil || commandID != managedModelExchangeCommandID || input["grantCode"] != "grant-test" {
t.Fatalf("parse fixture commandID=%q input=%#v err=%v", commandID, input, err)
}
}
func TestParseManagedModelInputRejectsUnknownFields(t *testing.T) {
previous := managedModelInputReader
managedModelInputReader = func() io.Reader {
return strings.NewReader(`{"grantRef":"grant-1","extra":"no"}`)
}
t.Cleanup(func() { managedModelInputReader = previous })
_, _, err := parseManagedModelInput([]string{"models", "--input-json", "-"})
if err == nil || !strings.Contains(err.Error(), "unknown field") {
t.Fatalf("err = %v", err)
}
}
func TestParseManagedModelCredentialRejectsUnsupportedModelPlanID(t *testing.T) {
previous := managedModelInputReader
managedModelInputReader = func() io.Reader {
return strings.NewReader(`{"capability":"chat","grantRef":"grant-1","model":"gpt","modelPlanId":"plan-1","provider":"openai"}`)
}
t.Cleanup(func() { managedModelInputReader = previous })
_, _, err := parseManagedModelInput([]string{"credential", "--input-json", "-"})
if err == nil || !strings.Contains(err.Error(), `unknown field "modelPlanId"`) {
t.Fatalf("err = %v", err)
}
}