e83440db58
* PoC full flow (hello world example) * add avatar resource domain * add postmessage logic and richer UI * add create issue ui * update ui for issue creatioon * fix * ignore banner * update docs after rebase * update toolsnap for get_me * new UI changes * update docs * update workflows that need ui build * add UI diff * fix build ui step for windows runners to use git bash * fix UI diff * refactor issue creation UI * add AvatarWithFallback component and update UserCard to use it; enhance CreateIssueApp to manage existing issue data * fix formatting of button labels * add create pull request functionality with UI support and insiders * update docs * add test for insiders mode handling in ServerTool schema * remove `show_ui` param for now * make insiders mode metadata stripping generic * remove ui diff * fix CI * remove redundant mention of old app name * add node types to fix ide issues for ts code * remove unused TriangleDownIcon import * update @primer/behaviors and electron-to-chromium versions in package-lock.json * add check to ensure base and head are not the same when creating a new PR * remove old show_ui * fix gitignore for dist so builds dont break * add tests for insiders mode handling and metadata stripping in ServerTool * remove unused state and components from CreatePRApp * fix ui build * update docker build to fix npm issue * remove reference to show_ui * allow insiders to work for non-ui features * formalise insiders inventory support * update docs * fix overflow issues and replace pull request dropdown with matching UI from dotcom * fix createpullrequest test * consolidate fetching tools under `ui_get` tool to remove toolset deps * fix issue data prefill in issue_write form * fix link component when updating issue * fix avatar URL * fix broken issue update logic * remove dbg * fix for new GetFlags * revert to original required fields for create_pull_request * fix for UI form submission * Simplify MCP App UIs for basic branch Remove advanced features to be kept in mcp-ui-apps-advanced: - Strip labels, assignees, milestones, issue types, repo picker from issue-write - Strip repo picker, branch selectors from pr-write - Delete ui_get tool (ui_tools.go, ui_tools_test.go, ui_get.snap) - Remove UIGet registration from tools.go Basic forms retain: title, body, submit with _ui_submitted, draft/regular split button (PR), MarkdownEditor, and SuccessView. * Fix header spacing in issue-write and pr-write UIs Add proper spacing between icon, title text, and repo name in the header bar for both issue-write and create-pull-request forms. * fix UI spacing * Add insiders flag to User-Agent header When InsidersMode is enabled, append '(insiders)' to the User-Agent string sent with GitHub API requests, enabling server-side adoption tracking. * address ui feedback * added ui/no-ui support * improve active state UI for write and preview button. make padding consistent in textarea * return to prev non ui check * use hardcoded client name check for ui support * linter fixes * merge fix * linter fix 2 --------- Co-authored-by: tommaso-moro <tommaso-moro@github.com>
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package github
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/modelcontextprotocol/go-sdk/mcp"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func Test_clientSupportsUI(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
clientName string
|
|
want bool
|
|
}{
|
|
{name: "VS Code Insiders", clientName: "Visual Studio Code - Insiders", want: true},
|
|
{name: "VS Code Stable", clientName: "Visual Studio Code", want: true},
|
|
{name: "unknown client", clientName: "some-other-client", want: false},
|
|
{name: "empty client name", clientName: "", want: false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
req := createMCPRequestWithSession(t, tt.clientName, nil)
|
|
assert.Equal(t, tt.want, clientSupportsUI(&req))
|
|
})
|
|
}
|
|
|
|
t.Run("nil request", func(t *testing.T) {
|
|
assert.False(t, clientSupportsUI(nil))
|
|
})
|
|
|
|
t.Run("nil session", func(t *testing.T) {
|
|
req := createMCPRequest(nil)
|
|
assert.False(t, clientSupportsUI(&req))
|
|
})
|
|
}
|
|
|
|
func Test_clientSupportsUI_nilClientInfo(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
srv := mcp.NewServer(&mcp.Implementation{Name: "test"}, nil)
|
|
st, _ := mcp.NewInMemoryTransports()
|
|
session, err := srv.Connect(context.Background(), st, &mcp.ServerSessionOptions{
|
|
State: &mcp.ServerSessionState{
|
|
InitializeParams: &mcp.InitializeParams{
|
|
ClientInfo: nil,
|
|
},
|
|
},
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Cleanup(func() { _ = session.Close() })
|
|
|
|
req := mcp.CallToolRequest{Session: session}
|
|
assert.False(t, clientSupportsUI(&req))
|
|
}
|