@@ -41,7 +41,7 @@ jest.mock("@/hooks/use-toast", () => ({
41
41
} ) ,
42
42
} ) ) ;
43
43
44
- // Mock MCP SDK functions
44
+ // Mock MCP SDK functions - must be before imports
45
45
jest . mock ( "@modelcontextprotocol/sdk/client/auth.js" , ( ) => ( {
46
46
auth : jest . fn ( ) ,
47
47
discoverOAuthMetadata : jest . fn ( ) ,
@@ -50,14 +50,20 @@ jest.mock("@modelcontextprotocol/sdk/client/auth.js", () => ({
50
50
exchangeAuthorization : jest . fn ( ) ,
51
51
} ) ) ;
52
52
53
- // Import mocked functions
53
+ // Import the functions to get their types
54
54
import {
55
- discoverOAuthMetadata as mockDiscoverOAuthMetadata ,
56
- registerClient as mockRegisterClient ,
57
- startAuthorization as mockStartAuthorization ,
58
- exchangeAuthorization as mockExchangeAuthorization ,
55
+ discoverOAuthMetadata ,
56
+ registerClient ,
57
+ startAuthorization ,
58
+ exchangeAuthorization ,
59
59
} from "@modelcontextprotocol/sdk/client/auth.js" ;
60
60
61
+ // Type the mocked functions properly
62
+ const mockDiscoverOAuthMetadata = discoverOAuthMetadata as jest . MockedFunction < typeof discoverOAuthMetadata > ;
63
+ const mockRegisterClient = registerClient as jest . MockedFunction < typeof registerClient > ;
64
+ const mockStartAuthorization = startAuthorization as jest . MockedFunction < typeof startAuthorization > ;
65
+ const mockExchangeAuthorization = exchangeAuthorization as jest . MockedFunction < typeof exchangeAuthorization > ;
66
+
61
67
// Mock Session Storage
62
68
const sessionStorageMock = {
63
69
getItem : jest . fn ( ) ,
@@ -101,22 +107,22 @@ describe("AuthDebugger", () => {
101
107
beforeEach ( ( ) => {
102
108
jest . clearAllMocks ( ) ;
103
109
sessionStorageMock . getItem . mockReturnValue ( null ) ;
104
- ( mockDiscoverOAuthMetadata as jest . Mock ) . mockResolvedValue (
105
- mockOAuthMetadata ,
106
- ) ;
107
- ( mockRegisterClient as jest . Mock ) . mockResolvedValue ( mockOAuthClientInfo ) ;
108
- ( mockStartAuthorization as jest . Mock ) . mockResolvedValue ( {
110
+
111
+ // Set up mock implementations
112
+ mockDiscoverOAuthMetadata . mockResolvedValue ( mockOAuthMetadata ) ;
113
+ mockRegisterClient . mockResolvedValue ( mockOAuthClientInfo ) ;
114
+ mockStartAuthorization . mockResolvedValue ( {
109
115
authorizationUrl : new URL ( "https://oauth.example.com/authorize" ) ,
110
116
codeVerifier : "test_verifier" ,
111
117
} ) ;
112
- ( mockExchangeAuthorization as jest . Mock ) . mockResolvedValue ( mockOAuthTokens ) ;
118
+ mockExchangeAuthorization . mockResolvedValue ( mockOAuthTokens ) ;
113
119
} ) ;
114
120
115
- const renderAuthDebugger = ( props = { } ) => {
121
+ const renderAuthDebugger = ( props : any = { } ) => {
116
122
const mergedProps = {
117
123
...defaultProps ,
118
124
...props ,
119
- authState : { ...defaultAuthState , ...props . authState } ,
125
+ authState : { ...defaultAuthState , ...( props . authState || { } ) } ,
120
126
} ;
121
127
return render (
122
128
< TooltipProvider >
@@ -290,9 +296,7 @@ describe("AuthDebugger", () => {
290
296
fireEvent . click ( screen . getByText ( "Continue" ) ) ;
291
297
} ) ;
292
298
293
- expect ( mockDiscoverOAuthMetadata ) . toHaveBeenCalledWith (
294
- "https://example.com" ,
295
- ) ;
299
+ expect ( mockDiscoverOAuthMetadata ) . toHaveBeenCalledWith ( "https://example.com" ) ;
296
300
} ) ;
297
301
} ) ;
298
302
} ) ;
0 commit comments