Harden screen list query failures
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run

This commit is contained in:
Snider 2026-04-17 18:45:43 +01:00
parent 4b8a534920
commit e120c25da0
2 changed files with 19 additions and 1 deletions

View file

@ -74,6 +74,24 @@ func TestMCP_Bad_NoServices(t *testing.T) {
assert.False(t, r.OK)
}
func TestSubsystem_Bad_CallTool_ScreenListMalformedQuery(t *testing.T) {
c := core.New(core.WithServiceLock())
c.RegisterQuery(func(_ *core.Core, q core.Query) core.Result {
if _, ok := q.(screen.QueryAll); ok {
return core.Result{Value: "malformed screen query payload", OK: false}
}
return core.Result{}
})
sub := New(c)
server := mcp.NewServer(&mcp.Implementation{Name: "test", Version: "0.1.0"}, nil)
sub.RegisterTools(server)
_, err := sub.CallTool(context.Background(), "screen_list", nil)
require.Error(t, err)
assert.Contains(t, err.Error(), "screen query failed")
}
type manifestScreenPlatform struct{}
type manifestBrowserPlatform struct {

View file

@ -24,7 +24,7 @@ func (s *Subsystem) screenList(_ context.Context, _ *mcp.CallToolRequest, _ Scre
if e, ok := r.Value.(error); ok {
return nil, ScreenListOutput{}, e
}
return nil, ScreenListOutput{}, nil
return nil, ScreenListOutput{}, coreerr.E("mcp.screenList", "screen query failed", nil)
}
screens, ok := r.Value.([]screen.Screen)
if !ok {