Skip to content

Commit d163e4b

Browse files
author
root
committed
test: verify get_me succeeds with omitted tool arguments
Add an integration test that exercises the full get_me handler path when clients omit the arguments field, matching the failure mode in #2587.
1 parent 8cf2de3 commit d163e4b

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

pkg/github/context_tools_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,47 @@ func Test_GetMe(t *testing.T) {
139139
}
140140
}
141141

142+
func Test_GetMe_OmittedArguments(t *testing.T) {
143+
t.Parallel()
144+
145+
serverTool := GetMe(translations.NullTranslationHelper)
146+
147+
mockUser := &github.User{
148+
Login: github.Ptr("testuser"),
149+
Name: github.Ptr("Test User"),
150+
HTMLURL: github.Ptr("https://github.com/testuser"),
151+
CreatedAt: &github.Timestamp{Time: time.Now()},
152+
}
153+
mockedClient := MockHTTPClientWithHandlers(map[string]http.HandlerFunc{
154+
GetUser: mockResponse(t, http.StatusOK, mockUser),
155+
})
156+
deps := BaseDeps{Client: mustNewGHClient(t, mockedClient), Obsv: stubExporters()}
157+
handler := serverTool.Handler(deps)
158+
159+
tests := []struct {
160+
name string
161+
arguments json.RawMessage
162+
}{
163+
{name: "nil arguments", arguments: nil},
164+
{name: "empty byte slice", arguments: json.RawMessage{}},
165+
}
166+
167+
for _, tc := range tests {
168+
t.Run(tc.name, func(t *testing.T) {
169+
request := createMCPRequestWithRawArguments(tc.arguments)
170+
result, err := handler(ContextWithDeps(context.Background(), deps), &request)
171+
require.NoError(t, err)
172+
require.False(t, result.IsError)
173+
174+
textContent := getTextResult(t, result)
175+
var returnedUser MinimalUser
176+
err = json.Unmarshal([]byte(textContent.Text), &returnedUser)
177+
require.NoError(t, err)
178+
assert.Equal(t, "testuser", returnedUser.Login)
179+
})
180+
}
181+
}
182+
142183
func Test_GetMe_IFC_FeatureFlag(t *testing.T) {
143184
t.Parallel()
144185

pkg/github/helper_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,16 @@ func createMCPRequest(args any) mcp.CallToolRequest {
323323
}
324324
}
325325

326+
// createMCPRequestWithRawArguments creates a CallToolRequest with the given raw JSON arguments.
327+
// Use nil or an empty slice to simulate clients that omit the arguments field.
328+
func createMCPRequestWithRawArguments(args json.RawMessage) mcp.CallToolRequest {
329+
return mcp.CallToolRequest{
330+
Params: &mcp.CallToolParamsRaw{
331+
Arguments: args,
332+
},
333+
}
334+
}
335+
326336
// Well-known MCP client names used in tests.
327337
const (
328338
ClientNameVSCodeInsiders = "Visual Studio Code - Insiders"

0 commit comments

Comments
 (0)