Skip to content

Commit

Permalink
fix: correct order of req/res uri for event emitter
Browse files Browse the repository at this point in the history
fixes #190
  • Loading branch information
shanejonas committed Jul 17, 2020
1 parent 131a4fc commit 0e6445e
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 20 deletions.
22 changes: 11 additions & 11 deletions src/RequestManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ describe("client-js", () => {

it("can be constructed and connect", () => {
const emitter = new EventEmitter();
const transport = new EventEmitterTransport(emitter, "from1", "to1");
const transport = new EventEmitterTransport(emitter, "to1", "from1");
const c = new RequestManager([transport]);
expect(!!c).toEqual(true);
});

it("can close", () => {
const emitter = new EventEmitter();
const transport = new EventEmitterTransport(emitter, "from1", "to1");
const transport = new EventEmitterTransport(emitter, "to1", "from1");
const c = new RequestManager([transport]);
c.close();
});

it("can send a request", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-request", "from1");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-request");
addMockServerTransport(emitter, "from1", "to1://local/rpc-response");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-response");
const c = new RequestManager([transport]);
const result = await c.request("foo", ["bar"]);
expect(result.method).toEqual("foo");
Expand All @@ -32,15 +32,15 @@ describe("client-js", () => {

it("can error on error response", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-error", "from1");
addMockServerTransport(emitter, "from1", "to1://local/rpc-error");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-error");
const c = new RequestManager([transport]);
await expect(c.request("foo", ["bar"])).rejects.toThrowError("Error message");
});

it("can error on malformed response and recieve error", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-garbage", "from1");
addMockServerTransport(emitter, "from1", "to1://local/rpc-garbage");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-garbage");
const c = new RequestManager([transport]);
const unknownError = new Promise((resolve) => {
Expand All @@ -63,7 +63,7 @@ describe("client-js", () => {

it("can return errors on batch requests", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-error", "from1");
addMockServerTransport(emitter, "from1", "to1://local/rpc-error");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-error");

const c = new RequestManager([transport]);
Expand All @@ -79,8 +79,8 @@ describe("client-js", () => {
it("can batch a request", async () => {

const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-request", "from1");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-request");
addMockServerTransport(emitter, "from1", "to1://local/rpc-response");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-response");

const c = new RequestManager([transport]);
c.startBatch();
Expand All @@ -99,8 +99,8 @@ describe("client-js", () => {
it("can batch a notifications", async () => {

const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://local/rpc-request", "from1");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-request");
addMockServerTransport(emitter, "from1", "to1://local/rpc-request");
const transport = new EventEmitterTransport(emitter, "from1", "to1://local/rpc-response");

const c = new RequestManager([transport]);
c.startBatch();
Expand Down
2 changes: 1 addition & 1 deletion src/__mocks__/eventEmitter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { EventEmitter } from "events";
import * as req from "./requestData";
export const addMockServerTransport = (emitter: EventEmitter, reqUri: string, resUri: string) => {
emitter.on(reqUri, (data) => {
const res = req.generateMockResponseData(reqUri, data);
const res = req.generateMockResponseData(resUri, data);
if (res) {
emitter.emit(resUri, res);
}
Expand Down
3 changes: 2 additions & 1 deletion src/__mocks__/requestData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,11 @@ export const generateMockResponseData = (uri: string, data: any) => {
const parsedUrl = url.parse(uri);
const path = parsedUrl.path || "";
const rpcNotification = path.search("rpc-notification");
const rpcResponse = path.search("rpc-response");
const rpcRequest = path.search("rpc-request");
const rpcError = path.search("rpc-error");
const rpcGarbage = path.search("rpc-garbage");
if (rpcRequest > 0) {
if (rpcResponse > 0 || rpcRequest > 0) {
return generateRequestResponse(false, data);
}
if (rpcError > 0) {
Expand Down
10 changes: 5 additions & 5 deletions src/transports/EventEmitterTransport.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ describe("EventEmitterTransport", () => {

it("can send and receive data", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://asdf/rpc-request", "from1");
const eventEmitterTransport = new EventEmitterTransport(emitter, "from1", "to1://asdf/rpc-request");
addMockServerTransport(emitter, "from1://asdf/rpc-request", "to1://asdf/rpc-response");
const eventEmitterTransport = new EventEmitterTransport(emitter, "from1://asdf/rpc-request", "to1://asdf/rpc-response");
await eventEmitterTransport.connect();
const result = await eventEmitterTransport.sendData({
request: generateMockRequest(1, "foo", ["bar"]),
Expand All @@ -34,7 +34,7 @@ describe("EventEmitterTransport", () => {

it("can send notifications", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://asdf/rpc-notification", "from1");
addMockServerTransport(emitter, "from1", "to1://asdf/rpc-notification");
const eventEmitterTransport = new EventEmitterTransport(emitter, "from1", "to1://asdf/rpc-notification");
await eventEmitterTransport.connect();
const result = await eventEmitterTransport.sendData({
Expand All @@ -46,7 +46,7 @@ describe("EventEmitterTransport", () => {

it("should throw error on bad response", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://asdf/rpc-error", "from1");
addMockServerTransport(emitter, "from1", "to1://asdf/rpc-error");
const eventEmitterTransport = new EventEmitterTransport(emitter, "from1", "to1://asdf/rpc-error");
await eventEmitterTransport.connect();
await expect(eventEmitterTransport.sendData({
Expand All @@ -58,7 +58,7 @@ describe("EventEmitterTransport", () => {

it("should throw error on bad protocol", async () => {
const emitter = new EventEmitter();
addMockServerTransport(emitter, "to1://asdf/rpc-error", "from1");
addMockServerTransport(emitter, "from1", "to1://asdf/rpc-error");
const eventEmitterTransport = new EventEmitterTransport(emitter, "from1", "to1://asdf/rpc-error");
await eventEmitterTransport.connect();
eventEmitterTransport.connection.emit = () => { throw new Error("failed protocol"); };
Expand Down
4 changes: 2 additions & 2 deletions src/transports/EventEmitterTransport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class EventEmitterTransport extends Transport {
}

public connect(): Promise<any> {
this.connection.on(this.reqUri, (data: any) => {
this.connection.on(this.resUri, (data: any) => {
this.transportRequestManager.resolveResponse(data);
});
return Promise.resolve();
Expand All @@ -27,7 +27,7 @@ class EventEmitterTransport extends Transport {
const notifications = getNotifications(data);
const parsedData = this.parseData(data);
try {
this.connection.emit(this.resUri, parsedData);
this.connection.emit(this.reqUri, parsedData);
this.transportRequestManager.settlePendingRequest(notifications);
return prom;
} catch (e) {
Expand Down

0 comments on commit 0e6445e

Please sign in to comment.