源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
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
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
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user