Skip to content

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

Merged
merged 2 commits into from
Jun 18, 2025
Merged

chore: fix e2e tests #536

merged 2 commits into from
Jun 18, 2025

Conversation

tonytrg
Copy link
Contributor

@tonytrg tonytrg commented Jun 17, 2025

Closes:

    e2e_test.go:518: 
                Error Trace:    /Users/tonytrg/dev/work/github-mcp-server/e2e/e2e_test.go:518
                Error:          Received unexpected error:
                                invalid character 's' looking for beginning of value
                Test:           TestFileDeletion
                Messages:       expected to unmarshal text content successfully

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.

@Copilot Copilot AI review requested due to automatic review settings June 17, 2025 16:46
@tonytrg tonytrg requested a review from a team as a code owner June 17, 2025 16:46
Copy link
Contributor

@Copilot Copilot AI left a 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 extracting TextResourceContents.
  • 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

Comment on lines +510 to 518
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")

Copy link
Preview

Copilot AI Jun 17, 2025

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.

Comment on lines +702 to 710
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")

Copy link
Preview

Copilot AI Jun 17, 2025

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.

@SamMorrowDrums
Copy link
Collaborator

Thanky you @tonytrg

@tonytrg tonytrg merged commit 1ddb78d into main Jun 18, 2025
16 checks passed
@tonytrg tonytrg deleted the tonytrg/fix-e2e branch June 18, 2025 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants