WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/shared/test/demoInMemoryOAuthProvider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ describe('DemoInMemoryAuthProvider', () => {

const tokens = await provider.exchangeAuthorizationCode(validClient, code);

expect(tokens).toEqual({
expect(tokens).toStrictEqual({
access_token: expect.any(String),
token_type: 'bearer',
expires_in: 3600,
Expand Down Expand Up @@ -253,7 +253,7 @@ describe('DemoInMemoryAuthProvider', () => {
await store.registerClient(client);
const retrieved = await store.getClient('test-client');

expect(retrieved).toEqual(client);
expect(retrieved).toStrictEqual(client);
});

it('should return undefined for non-existent client', async () => {
Expand Down
126 changes: 73 additions & 53 deletions packages/client/test/client/auth.test.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/client/test/client/middleware.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1034,7 +1034,7 @@ describe('createMiddleware', () => {
const response = await enhancedFetch('https://api.example.com/data');
const result = await response.json();

expect(result).toEqual({
expect(result).toStrictEqual({
data: 'original',
timestamp: 123456789
});
Expand Down
4 changes: 2 additions & 2 deletions packages/client/test/client/sse.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ describe('SSEClientTransport', () => {
await new Promise(resolve => setTimeout(resolve, 50));

expect(receivedMessages).toHaveLength(1);
expect(receivedMessages[0]).toEqual(testMessage);
expect(receivedMessages[0]).toStrictEqual(testMessage);
});

it('handles malformed JSON messages', async () => {
Expand Down Expand Up @@ -193,7 +193,7 @@ describe('SSEClientTransport', () => {

expect(lastServerRequest.method).toBe('POST');
expect(lastServerRequest.headers['content-type']).toBe('application/json');
expect(JSON.parse((lastServerRequest as IncomingMessage & { body: string }).body)).toEqual(testMessage);
expect(JSON.parse((lastServerRequest as IncomingMessage & { body: string }).body)).toStrictEqual(testMessage);
});

it('handles POST request failures', async () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/client/test/client/stdio.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ test('should read messages', async () => {
await client.send(messages[0]!);
await client.send(messages[1]!);
await finished;
expect(readMessages).toEqual(messages);
expect(readMessages).toStrictEqual(messages);

await client.close();
});
Expand Down
10 changes: 5 additions & 5 deletions packages/core/test/inMemory.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe('InMemoryTransport', () => {
};

await clientTransport.send(message);
expect(receivedMessage).toEqual(message);
expect(receivedMessage).toStrictEqual(message);
});

test('should send message with auth info from client to server', async () => {
Expand All @@ -57,8 +57,8 @@ describe('InMemoryTransport', () => {
};

await clientTransport.send(message, { authInfo });
expect(receivedMessage).toEqual(message);
expect(receivedAuthInfo).toEqual(authInfo);
expect(receivedMessage).toStrictEqual(message);
expect(receivedAuthInfo).toStrictEqual(authInfo);
});

test('should send message from server to client', async () => {
Expand All @@ -74,7 +74,7 @@ describe('InMemoryTransport', () => {
};

await serverTransport.send(message);
expect(receivedMessage).toEqual(message);
expect(receivedMessage).toStrictEqual(message);
});

test('should handle close', async () => {
Expand Down Expand Up @@ -113,6 +113,6 @@ describe('InMemoryTransport', () => {

await clientTransport.send(message);
await serverTransport.start();
expect(receivedMessage).toEqual(message);
expect(receivedMessage).toStrictEqual(message);
});
});
69 changes: 35 additions & 34 deletions packages/core/test/shared/protocol.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ describe('protocol tests', () => {
});
}
await Promise.resolve();
await expect(requestPromise).resolves.toEqual({ result: 'success' });
await expect(requestPromise).resolves.toStrictEqual({ result: 'success' });
});

test('should respect maxTotalTimeout', async () => {
Expand Down Expand Up @@ -550,7 +550,7 @@ describe('protocol tests', () => {
});
}
await Promise.resolve();
await expect(requestPromise).resolves.toEqual({ result: 'success' });
await expect(requestPromise).resolves.toStrictEqual({ result: 'success' });
});

test('should handle progress notifications with message field', async () => {
Expand Down Expand Up @@ -618,7 +618,7 @@ describe('protocol tests', () => {
});
}
await Promise.resolve();
await expect(requestPromise).resolves.toEqual({ result: 'success' });
await expect(requestPromise).resolves.toStrictEqual({ result: 'success' });
});
});

Expand Down Expand Up @@ -850,9 +850,9 @@ describe('InMemoryTaskMessageQueue', () => {
await queue.enqueue(taskId, msg2);
await queue.enqueue(taskId, msg3);

expect(await queue.dequeue(taskId)).toEqual(msg1);
expect(await queue.dequeue(taskId)).toEqual(msg2);
expect(await queue.dequeue(taskId)).toEqual(msg3);
expect(await queue.dequeue(taskId)).toStrictEqual(msg1);
expect(await queue.dequeue(taskId)).toStrictEqual(msg2);
expect(await queue.dequeue(taskId)).toStrictEqual(msg3);
});

it('should return undefined when dequeuing from empty queue', async () => {
Expand Down Expand Up @@ -884,12 +884,12 @@ describe('InMemoryTaskMessageQueue', () => {

const allMessages = await queue.dequeueAll(taskId);

expect(allMessages).toEqual([msg1, msg2, msg3]);
expect(allMessages).toStrictEqual([msg1, msg2, msg3]);
});

it('should return empty array for empty queue', async () => {
const allMessages = await queue.dequeueAll(taskId);
expect(allMessages).toEqual([]);
expect(allMessages).toStrictEqual([]);
});

it('should clear queue after dequeueAll', async () => {
Expand Down Expand Up @@ -933,7 +933,7 @@ describe('mergeCapabilities', () => {
};

const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({
expect(merged).toStrictEqual({
sampling: {},
elicitation: {},
roots: {
Expand Down Expand Up @@ -965,7 +965,7 @@ describe('mergeCapabilities', () => {
};

const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({
expect(merged).toStrictEqual({
logging: {},
prompts: {
listChanged: true
Expand Down Expand Up @@ -997,7 +997,7 @@ describe('mergeCapabilities', () => {
const base = {};
const additional = {};
const merged = mergeCapabilities(base, additional);
expect(merged).toEqual({});
expect(merged).toStrictEqual({});
});
});

Expand Down Expand Up @@ -1183,7 +1183,7 @@ describe('Task-based execution', () => {
const queuedMessage = await queue!.dequeue('parent-task-456');
assertQueuedNotification(queuedMessage);
expect(queuedMessage.message.method).toBe('notifications/message');
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual({ taskId: 'parent-task-456' });
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual({ taskId: 'parent-task-456' });
});
});

Expand Down Expand Up @@ -1268,7 +1268,7 @@ describe('Task-based execution', () => {

protocol.setRequestHandler(CallToolRequestSchema, async request => {
// Tool implementor can access task creation parameters from request.params.task
expect(request.params.task).toEqual({
expect(request.params.task).toStrictEqual({
ttl: 60000,
pollInterval: 1000
});
Expand Down Expand Up @@ -1349,10 +1349,11 @@ describe('Task-based execution', () => {
const sentMessage = sendSpy.mock.calls[0]![0];
expect(sentMessage.jsonrpc).toBe('2.0');
expect(sentMessage.id).toBe(3);
expect(sentMessage.result.tasks).toEqual([
expect(sentMessage.result.tasks).toStrictEqual([
{
taskId: task1.taskId,
status: 'completed',
statusMessage: undefined,
ttl: null,
createdAt: expect.any(String),
lastUpdatedAt: expect.any(String),
Expand All @@ -1367,7 +1368,7 @@ describe('Task-based execution', () => {
pollInterval: 1000
}
]);
expect(sentMessage.result._meta).toEqual({});
expect(sentMessage.result._meta).toStrictEqual({});
});

it('should handle tasks/list requests with cursor for pagination', async () => {
Expand Down Expand Up @@ -1412,7 +1413,7 @@ describe('Task-based execution', () => {
const sentMessage = sendSpy.mock.calls[0]![0];
expect(sentMessage.jsonrpc).toBe('2.0');
expect(sentMessage.id).toBe(2);
expect(sentMessage.result.tasks).toEqual([
expect(sentMessage.result.tasks).toStrictEqual([
{
taskId: task3.taskId,
status: 'working',
Expand All @@ -1423,7 +1424,7 @@ describe('Task-based execution', () => {
}
]);
expect(sentMessage.result.nextCursor).toBeUndefined();
expect(sentMessage.result._meta).toEqual({});
expect(sentMessage.result._meta).toStrictEqual({});
});

it('should handle tasks/list requests with empty results', async () => {
Expand Down Expand Up @@ -1456,9 +1457,9 @@ describe('Task-based execution', () => {
const sentMessage = sendSpy.mock.calls[0]![0];
expect(sentMessage.jsonrpc).toBe('2.0');
expect(sentMessage.id).toBe(3);
expect(sentMessage.result.tasks).toEqual([]);
expect(sentMessage.result.tasks).toStrictEqual([]);
expect(sentMessage.result.nextCursor).toBeUndefined();
expect(sentMessage.result._meta).toEqual({});
expect(sentMessage.result._meta).toStrictEqual({});
});

it('should return error for invalid cursor', async () => {
Expand Down Expand Up @@ -1895,7 +1896,7 @@ describe('Task-based execution', () => {

// Verify response does NOT include related-task metadata
const response = sendSpy.mock.calls[0]![0] as { result?: { _meta?: Record<string, unknown> } };
expect(response.result?._meta).toEqual({});
expect(response.result?._meta).toStrictEqual({});
});

it('should NOT include related-task metadata in tasks/cancel response', async () => {
Expand Down Expand Up @@ -1934,7 +1935,7 @@ describe('Task-based execution', () => {

// Verify response does NOT include related-task metadata
const response = sendSpy.mock.calls[0]![0] as { result?: { _meta?: Record<string, unknown> } };
expect(response.result?._meta).toEqual({});
expect(response.result?._meta).toStrictEqual({});
});

it('should include related-task metadata in tasks/result response', async () => {
Expand Down Expand Up @@ -2059,7 +2060,7 @@ describe('Task-based execution', () => {
const queuedMessage = await queue!.dequeue('parent-task-123');
assertQueuedNotification(queuedMessage);
expect(queuedMessage.message.method).toBe('notifications/message');
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual({
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual({
taskId: 'parent-task-123'
});

Expand Down Expand Up @@ -3038,9 +3039,9 @@ describe('Capability negotiation for tasks', () => {
}
};

expect(serverCapabilities.tasks.list).toEqual({});
expect(serverCapabilities.tasks.cancel).toEqual({});
expect(serverCapabilities.tasks.requests.tools.call).toEqual({});
expect(serverCapabilities.tasks.list).toStrictEqual({});
expect(serverCapabilities.tasks.cancel).toStrictEqual({});
expect(serverCapabilities.tasks.requests.tools.call).toStrictEqual({});
});

it('should include list and cancel in server capabilities', () => {
Expand Down Expand Up @@ -3103,7 +3104,7 @@ describe('Message interception for task-related notifications', () => {
const queuedMessage = await queue!.dequeue(task.taskId);
assertQueuedNotification(queuedMessage);
expect(queuedMessage.message.method).toBe('notifications/message');
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual({ taskId: task.taskId });
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual({ taskId: task.taskId });
});

it('should not queue notifications without related-task metadata', async () => {
Expand Down Expand Up @@ -3290,7 +3291,7 @@ describe('Message interception for task-related requests', () => {
const queuedMessage = await queue!.dequeue(task.taskId);
assertQueuedRequest(queuedMessage);
expect(queuedMessage.message.method).toBe('ping');
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual({ taskId: task.taskId });
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual({ taskId: task.taskId });

// Verify resolver is stored in _requestResolvers map (not in the message)
const requestId = (queuedMessage!.message as JSONRPCRequest).id as RequestId;
Expand Down Expand Up @@ -3461,7 +3462,7 @@ describe('Message interception for task-related requests', () => {

// Verify the response was routed correctly
const result = await requestPromise;
expect(result).toEqual({ message: 'pong' });
expect(result).toStrictEqual({ message: 'pong' });
});

it('should log error when resolver is missing for side-channeled request', async () => {
Expand Down Expand Up @@ -3725,7 +3726,7 @@ describe('Message Interception', () => {
expect(queuedMessage!.type).toBe('response');
if (queuedMessage!.type === 'response') {
expect(queuedMessage!.message.id).toBe(requestId);
expect(queuedMessage!.message.result).toEqual({ content: 'test result' });
expect(queuedMessage!.message.result).toStrictEqual({ content: 'test result' });
}
});

Expand Down Expand Up @@ -4067,7 +4068,7 @@ describe('Message Interception', () => {
expect(queuedMessage).toBeDefined();
assertQueuedNotification(queuedMessage);
expect(queuedMessage.message.params!._meta).toBeDefined();
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual(relatedTask);
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual(relatedTask);
});

it('should preserve relatedTask metadata in queued request', async () => {
Expand All @@ -4092,7 +4093,7 @@ describe('Message Interception', () => {
expect(queuedMessage).toBeDefined();
assertQueuedRequest(queuedMessage);
expect(queuedMessage.message.params!._meta).toBeDefined();
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual(relatedTask);
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual(relatedTask);

// Clean up
transport.onmessage?.({
Expand Down Expand Up @@ -4130,7 +4131,7 @@ describe('Message Interception', () => {
assertQueuedNotification(queuedMessage);
expect(queuedMessage.message.params!._meta!.customField).toBe('customValue');
expect(queuedMessage.message.params!._meta!.anotherField).toBe(123);
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toEqual({
expect(queuedMessage.message.params!._meta![RELATED_TASK_META_KEY]).toStrictEqual({
taskId: 'task-preserve-meta'
});
});
Expand Down Expand Up @@ -5373,7 +5374,7 @@ describe('Error handling for missing resolvers', () => {
const calledError = resolverMock.mock.calls[0]![0];
expect(calledError.code).toBe(ErrorCode.InvalidParams);
expect(calledError.message).toContain('Validation failed');
expect(calledError.data).toEqual({ field: 'userName', reason: 'required' });
expect(calledError.data).toStrictEqual({ field: 'userName', reason: 'required' });
});

it('should not throw when processing error with missing resolver', async () => {
Expand Down Expand Up @@ -5561,7 +5562,7 @@ describe('Error handling for missing resolvers', () => {
}

// Verify FIFO order was maintained
expect(callOrder).toEqual([1, 2, 3]);
expect(callOrder).toStrictEqual([1, 2, 3]);
});
});
});
4 changes: 2 additions & 2 deletions packages/core/test/shared/stdio.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ test('should only yield a message after a newline', () => {
expect(readBuffer.readMessage()).toBeNull();

readBuffer.append(Buffer.from('\n'));
expect(readBuffer.readMessage()).toEqual(testMessage);
expect(readBuffer.readMessage()).toStrictEqual(testMessage);
expect(readBuffer.readMessage()).toBeNull();
});

Expand All @@ -31,5 +31,5 @@ test('should be reusable after clearing', () => {

readBuffer.append(Buffer.from(JSON.stringify(testMessage)));
readBuffer.append(Buffer.from('\n'));
expect(readBuffer.readMessage()).toEqual(testMessage);
expect(readBuffer.readMessage()).toStrictEqual(testMessage);
});
Loading
Loading