From 6a1cc17f4124ec7a21f77b2d01a702c4d76da3be Mon Sep 17 00:00:00 2001 From: Kevin Viglucci Date: Sun, 23 Jan 2022 17:32:06 -0600 Subject: [PATCH] test: add failing test for WebsocketClientTransport --- packages/rsocket-browser-tck/browser-tck.js | 71 +++++++++++++++++++ .../src/WebsocketClientTransport.spec.ts | 26 +++++++ 2 files changed, 97 insertions(+) create mode 100644 packages/rsocket-browser-tck/browser-tck.js create mode 100644 packages/rsocket-browser-tck/src/WebsocketClientTransport.spec.ts diff --git a/packages/rsocket-browser-tck/browser-tck.js b/packages/rsocket-browser-tck/browser-tck.js new file mode 100644 index 00000000..82b7d15a --- /dev/null +++ b/packages/rsocket-browser-tck/browser-tck.js @@ -0,0 +1,71 @@ +const path = require("path"); +const karma = require("karma"); +const { RSocketServer } = require("@rsocket/core"); +const { + WebsocketServerTransport, +} = require("@rsocket/transport-websocket-server"); +const WebSocket = require("ws"); +const parseConfig = karma.config.parseConfig; +const Server = karma.Server; + +const rsocketServerPort = 9091; +const rSocketServer = new RSocketServer({ + transport: new WebsocketServerTransport({ + wsCreator: (options) => { + return new WebSocket.Server({ + port: rsocketServerPort, + }); + }, + }), + acceptor: { + accept: async () => ({ + requestResponse: (payload, responderStream) => { + const timeout = setTimeout( + () => + responderStream.onNext( + { + data: Buffer.concat([Buffer.from("Echo: "), payload.data]), + }, + true + ), + 80 + ); + return { + cancel: () => { + clearTimeout(timeout); + console.log("cancelled"); + }, + onExtension: () => { + console.log("Received Extension request"); + }, + }; + }, + }), + }, +}); + +let karmaServer = null; +let karmaConfig = null; +let rSocketServerClosable = null; +parseConfig( + path.resolve("./karma.conf.js"), + { port: 9876 }, + { promiseConfig: true, throwErrors: true } +) + .then(async (_karmaConfig) => { + rSocketServerClosable = await rSocketServer.bind(); + console.log(`RSocket Server started on port ${rsocketServerPort}`); + karmaConfig = _karmaConfig; + karmaServer = new Server(_karmaConfig, async function doneCallback( + exitCode + ) { + console.log(`Karma exited with code: ${exitCode}`); + await rSocketServerClosable.close(); + process.exit(exitCode); + }); + return karmaServer.start(); + }) + .catch((rejectReason) => { + console.error(rejectReason); + process.exit(1); + }); diff --git a/packages/rsocket-browser-tck/src/WebsocketClientTransport.spec.ts b/packages/rsocket-browser-tck/src/WebsocketClientTransport.spec.ts new file mode 100644 index 00000000..e5812140 --- /dev/null +++ b/packages/rsocket-browser-tck/src/WebsocketClientTransport.spec.ts @@ -0,0 +1,26 @@ +import { RSocketConnector } from "@rsocket/core"; +import { WebsocketClientTransport } from "@rsocket/transport-websocket-client"; + +// const Buffer = require("buffer/").Buffer; + +// window.Buffer = Buffer; + +describe("WebsocketClientTransport", () => { + describe("connector", function () { + it("connect", async () => { + const url = "ws://localhost:9091"; + const connector = new RSocketConnector({ + transport: new WebsocketClientTransport({ + url, + }), + }); + const rsocket = await connector.connect(); + await new Promise((resolve) => { + setTimeout(() => { + resolve(null); + }, 80); + }); + await rsocket.close(); + }); + }); +});