@@ -4,20 +4,65 @@ import (
44 "context"
55 "errors"
66 "log/slog"
7+ "net/http"
8+ "net/http/httptest"
9+ "net/url"
710 "testing"
811
12+ ghcontext "github.com/github/github-mcp-server/pkg/context"
913 "github.com/github/github-mcp-server/pkg/github"
14+ "github.com/github/github-mcp-server/pkg/http/headers"
1015 "github.com/github/github-mcp-server/pkg/observability"
1116 "github.com/github/github-mcp-server/pkg/observability/metrics"
1217 "github.com/github/github-mcp-server/pkg/translations"
1318 "github.com/stretchr/testify/assert"
19+ "github.com/stretchr/testify/require"
1420)
1521
22+ type requestDepsAPIHost struct {
23+ url * url.URL
24+ }
25+
26+ func (h requestDepsAPIHost ) BaseRESTURL (context.Context ) (* url.URL , error ) { return h .url , nil }
27+ func (h requestDepsAPIHost ) GraphqlURL (context.Context ) (* url.URL , error ) { return h .url , nil }
28+ func (h requestDepsAPIHost ) UploadURL (context.Context ) (* url.URL , error ) { return h .url , nil }
29+ func (h requestDepsAPIHost ) RawURL (context.Context ) (* url.URL , error ) { return h .url , nil }
30+ func (h requestDepsAPIHost ) AuthorizationServerURL (context.Context ) (* url.URL , error ) {
31+ return h .url , nil
32+ }
33+
1634func testExporters () observability.Exporters {
1735 obs , _ := observability .NewExporters (slog .New (slog .DiscardHandler ), metrics .NewNoopMetrics ())
1836 return obs
1937}
2038
39+ func TestRequestDepsGetClientSetsAPIVersion (t * testing.T ) {
40+ t .Parallel ()
41+
42+ var gotVersion string
43+ server := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
44+ gotVersion = r .Header .Get (headers .GitHubAPIVersionHeader )
45+ w .WriteHeader (http .StatusOK )
46+ }))
47+ defer server .Close ()
48+
49+ serverURL , err := url .Parse (server .URL )
50+ require .NoError (t , err )
51+ apiHost := requestDepsAPIHost {url : serverURL }
52+ deps := github .NewRequestDeps (apiHost , "test" , false , nil , nil , 0 , nil , testExporters ())
53+ ctx := ghcontext .WithTokenInfo (context .Background (), & ghcontext.TokenInfo {Token : "test-token" })
54+ client , err := deps .GetClient (ctx )
55+ require .NoError (t , err )
56+
57+ req , err := client .NewRequest (ctx , http .MethodGet , "rate_limit" , nil )
58+ require .NoError (t , err )
59+ resp , err := client .Do (req , nil )
60+ require .NoError (t , err )
61+ defer resp .Body .Close ()
62+
63+ assert .Equal (t , headers .GitHubAPIVersion , gotVersion )
64+ }
65+
2166func TestIsFeatureEnabled_WithEnabledFlag (t * testing.T ) {
2267 t .Parallel ()
2368
0 commit comments