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
30 lines
1.2 KiB
Go
30 lines
1.2 KiB
Go
package cli
|
|
|
|
import "testing"
|
|
|
|
func TestValidateCapabilityInputSchemaRejectsConstraintsTheInvokerCannotEnforce(t *testing.T) {
|
|
for name, schema := range map[string]map[string]any{
|
|
"ref": {"type": "object", "$ref": "#/$defs/input", "$defs": map[string]any{}},
|
|
"nullable": {"type": []any{"object", "null"}},
|
|
"pattern": {"type": "object", "properties": map[string]any{"name": map[string]any{"type": "string", "pattern": "^[a-z]+$"}}},
|
|
} {
|
|
t.Run(name, func(t *testing.T) {
|
|
if err := ValidateCapabilityInputSchema(schema); err == nil {
|
|
t.Fatalf("unsupported schema was accepted: %#v", schema)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestValidateCapabilityInputSchemaAcceptsFullyEnforcedSubset(t *testing.T) {
|
|
schema := map[string]any{"type": "object", "additionalProperties": false, "required": []any{"count"},
|
|
"properties": map[string]any{
|
|
"count": map[string]any{"type": "integer", "minimum": float64(1), "maximum": float64(10)},
|
|
"mode": map[string]any{"type": "string", "enum": []any{"safe", "fast"}},
|
|
"tags": map[string]any{"type": "array", "items": map[string]any{"type": "string"}},
|
|
}}
|
|
if err := ValidateCapabilityInputSchema(schema); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|