Skip to content

Commit 0b14e4d

Browse files
committed
changes from review
1 parent b424170 commit 0b14e4d

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

cmd/yardstick-server/main.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,15 @@ func echoHandler(_ context.Context, req *mcp.CallToolRequest, params EchoRequest
6565
}
6666

6767
if !validateAlphanumeric(params.Input) {
68-
return &mcp.CallToolResult{
68+
// Echo back metadata even in error cases
69+
result := &mcp.CallToolResult{
6970
Content: []mcp.Content{&mcp.TextContent{Text: "input must be alphanumeric only"}},
7071
IsError: true,
71-
}, EchoResponse{}, nil
72+
}
73+
if len(metadata) > 0 {
74+
result.Meta = metadata
75+
}
76+
return result, EchoResponse{}, nil
7277
}
7378

7479
response := EchoResponse{

cmd/yardstick-server/main_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,34 @@ func TestEchoHandler_WithoutMetadata(t *testing.T) {
288288
assert.NotNil(t, response)
289289
assert.Equal(t, "test123", response.Output)
290290
}
291+
292+
func TestEchoHandler_WithMetadata_ValidationError(t *testing.T) {
293+
// Create request with metadata but invalid input
294+
requestMeta := mcp.Meta{
295+
"progressToken": "error-token",
296+
"requestId": "error-req-123",
297+
}
298+
req := &mcp.CallToolRequest{
299+
Params: &mcp.CallToolParamsRaw{
300+
Meta: requestMeta,
301+
},
302+
}
303+
params := EchoRequest{Input: "invalid@input!"} // Contains special characters
304+
305+
// Call handler
306+
result, response, err := echoHandler(context.Background(), req, params)
307+
308+
// Verify response
309+
assert.NoError(t, err)
310+
assert.NotNil(t, result)
311+
assert.True(t, result.IsError, "Expected IsError to be true for invalid input")
312+
assert.NotEmpty(t, result.Content, "Expected error message in Content")
313+
314+
// Verify metadata is still echoed back even in error case
315+
assert.NotNil(t, result.Meta, "Metadata should be echoed back even on validation error")
316+
assert.Equal(t, requestMeta["progressToken"], result.Meta["progressToken"])
317+
assert.Equal(t, requestMeta["requestId"], result.Meta["requestId"])
318+
319+
// Verify response is empty for error case
320+
assert.Empty(t, response.Output)
321+
}

0 commit comments

Comments
 (0)