-
Notifications
You must be signed in to change notification settings - Fork 1.1k
chore: fix e2e tests #536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: fix e2e tests #536
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR updates the end-to-end tests to use the new embedded resource API for text content rather than decoding base64 JSON.
- Removed old
TextContent
JSON/base64 decode logic. - Switched to asserting on
mcp.EmbeddedResource
and extractingTextResourceContents
. - Dropped the
encoding/base64
import.
Comments suppressed due to low confidence (1)
e2e/e2e_test.go:513
- [nitpick] This comment is a bit vague. Consider clarifying what "raw api" refers to, or remove it if it's no longer needed.
// raw api
embeddedResource, ok := resp.Content[1].(mcp.EmbeddedResource) | ||
require.True(t, ok, "expected content to be of type EmbeddedResource") | ||
|
||
var trimmedGetFileText struct { | ||
Content string `json:"content"` | ||
} | ||
err = json.Unmarshal([]byte(textContent.Text), &trimmedGetFileText) | ||
require.NoError(t, err, "expected to unmarshal text content successfully") | ||
b, err := base64.StdEncoding.DecodeString(trimmedGetFileText.Content) | ||
require.NoError(t, err, "expected to decode base64 content successfully") | ||
require.Equal(t, fmt.Sprintf("Created by e2e test %s", t.Name()), string(b), "expected file content to match") | ||
// raw api | ||
textResource, ok := embeddedResource.Resource.(mcp.TextResourceContents) | ||
require.True(t, ok, "expected embedded resource to be of type TextResourceContents") | ||
|
||
require.Equal(t, fmt.Sprintf("Created by e2e test %s", t.Name()), textResource.Text, "expected file content to match") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The indexing (resp.Content[1]
) and type assertion logic is duplicated in both tests. Consider extracting a helper like getTextFromEmbedded(resp)
to improve readability and reduce duplication.
Copilot uses AI. Check for mistakes.
embeddedResource, ok := resp.Content[1].(mcp.EmbeddedResource) | ||
require.True(t, ok, "expected content to be of type EmbeddedResource") | ||
|
||
var trimmedGetFileText struct { | ||
Content string `json:"content"` | ||
} | ||
err = json.Unmarshal([]byte(textContent.Text), &trimmedGetFileText) | ||
require.NoError(t, err, "expected to unmarshal text content successfully") | ||
b, err := base64.StdEncoding.DecodeString(trimmedGetFileText.Content) | ||
require.NoError(t, err, "expected to decode base64 content successfully") | ||
require.Equal(t, fmt.Sprintf("Created by e2e test %s", t.Name()), string(b), "expected file content to match") | ||
// raw api | ||
textResource, ok := embeddedResource.Resource.(mcp.TextResourceContents) | ||
require.True(t, ok, "expected embedded resource to be of type TextResourceContents") | ||
|
||
require.Equal(t, fmt.Sprintf("Created by e2e test %s", t.Name()), textResource.Text, "expected file content to match") | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same pattern repeated here in TestDirectoryDeletion
. Extracting a shared helper for fetching and validating TextResourceContents
would reduce duplication.
Copilot uses AI. Check for mistakes.
Thanky you @tonytrg |
Closes:
Test will try to unmarshall the text body of:
"successfully downloaded text file"
, which is a simple string. https://github.com/github/github-mcp-server/blob/main/pkg/github/repositories.go#L498#505 makes use of the raw api, which requires a change in the e2e tests.