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
80 lines
2.7 KiB
Go
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)
|
|
}
|
|
}
|