| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import { detectOAuthRequirement } from '~/mcp/oauth'; |
| |
|
| | describe('OAuth Detection Integration Tests', () => { |
| | const NETWORK_TIMEOUT = 10000; |
| |
|
| | interface TestServer { |
| | name: string; |
| | url: string; |
| | expectedOAuth: boolean; |
| | expectedMethod: string; |
| | withMeta: boolean; |
| | } |
| |
|
| | const testServers: TestServer[] = [ |
| | { |
| | name: 'GitHub Copilot MCP Server', |
| | url: 'https://api.githubcopilot.com/mcp', |
| | expectedOAuth: true, |
| | expectedMethod: 'protected-resource-metadata', |
| | withMeta: true, |
| | }, |
| | { |
| | name: 'GitHub API (401 without metadata)', |
| | url: 'https://api.github.com/user', |
| | expectedOAuth: true, |
| | expectedMethod: 'no-metadata-found', |
| | withMeta: false, |
| | }, |
| | { |
| | name: 'Stytch Todo MCP Server', |
| | url: 'https://mcp-stytch-consumer-todo-list.maxwell-gerber42.workers.dev', |
| | expectedOAuth: true, |
| | expectedMethod: 'protected-resource-metadata', |
| | withMeta: true, |
| | }, |
| | { |
| | name: 'StackOverflow MCP (HEAD=405, POST=401+Bearer)', |
| | url: 'https://mcp.stackoverflow.com', |
| | expectedOAuth: true, |
| | expectedMethod: '401-challenge-metadata', |
| | withMeta: false, |
| | }, |
| | { |
| | name: 'HTTPBin (Non-OAuth)', |
| | url: 'https://httpbin.org', |
| | expectedOAuth: false, |
| | expectedMethod: 'no-metadata-found', |
| | withMeta: false, |
| | }, |
| | { |
| | name: 'Unreachable Server', |
| | url: 'https://definitely-not-a-real-server-12345.com', |
| | expectedOAuth: false, |
| | expectedMethod: 'no-metadata-found', |
| | withMeta: false, |
| | }, |
| | ]; |
| |
|
| | describe('detectOAuthRequirement integration', () => { |
| | testServers.forEach((server) => { |
| | it( |
| | `should handle ${server.name}`, |
| | async () => { |
| | const result = await detectOAuthRequirement(server.url); |
| |
|
| | expect(result.requiresOAuth).toBe(server.expectedOAuth); |
| | expect(result.method).toBe(server.expectedMethod); |
| | expect(result.metadata == null).toBe(!server.withMeta); |
| | }, |
| | NETWORK_TIMEOUT, |
| | ); |
| | }); |
| | }); |
| | }); |
| |
|