test: add RPC disconnection handling test case
This commit is contained in:
40
__tests__/e2e/rpc-disconnected.test.ts
Normal file
40
__tests__/e2e/rpc-disconnected.test.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { RPCError, RPCErrorCode } from "@/core/RPCError";
|
||||
import { RPCHandler } from "@/index"
|
||||
import { getRandomAvailablePort } from "@/utils/utils";
|
||||
|
||||
type serverProvider = { test: () => Promise<string> };
|
||||
|
||||
describe('Rpc disconnected test', () => {
|
||||
test('main', async () => {
|
||||
const port = await getRandomAvailablePort();
|
||||
|
||||
const server = new RPCHandler();
|
||||
server.setProvider<serverProvider>({
|
||||
test() {
|
||||
return new Promise<string>((resolve) => setTimeout(() => resolve('ok'), 1000))
|
||||
},
|
||||
})
|
||||
await server.listen({
|
||||
port,
|
||||
});
|
||||
|
||||
const client = new RPCHandler();
|
||||
const session = await client.connect({
|
||||
url: `http://localhost:${port}`,
|
||||
});
|
||||
const api = session.getAPI<serverProvider>();
|
||||
|
||||
const callPromise = api.test()
|
||||
|
||||
await session.connection.close();
|
||||
await expect(api.test()).rejects.toMatchObject(
|
||||
expect.objectContaining({
|
||||
constructor: RPCError,
|
||||
errorCode: RPCErrorCode.CONNECTION_DISCONNECTED
|
||||
})
|
||||
);
|
||||
await expect(callPromise).rejects.toBeInstanceOf(RPCError);
|
||||
await expect(callPromise).rejects
|
||||
.toHaveProperty('errorCode', RPCErrorCode.CONNECTION_DISCONNECTED);
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user