Skip to content

Commit

Permalink
remove utils that were not very useful
Browse files Browse the repository at this point in the history
  • Loading branch information
LiranCohen committed Feb 23, 2024
1 parent 7de0ad1 commit f54fac2
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 76 deletions.
51 changes: 2 additions & 49 deletions tests/utils.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { EventSubscriptionHandler, GenericMessage, Persona, UnionMessageReply } from '@tbd54566975/dwn-sdk-js';
import type { GenericMessage, Persona, UnionMessageReply } from '@tbd54566975/dwn-sdk-js';
import { Cid, DataStream, RecordsWrite } from '@tbd54566975/dwn-sdk-js';

import type { ReadStream } from 'node:fs';
Expand All @@ -11,9 +11,8 @@ import type { Readable } from 'readable-stream';
import { fileURLToPath } from 'url';
import { WebSocket } from 'ws';

import type { JsonRpcResponse, JsonRpcRequest } from '../src/lib/json-rpc.js';
import type { JsonRpcResponse } from '../src/lib/json-rpc.js';
import { createJsonRpcRequest } from '../src/lib/json-rpc.js';
import { JsonRpcSocket } from '../src/json-rpc-socket.js';

// __filename and __dirname are not defined in ES module scope
const __filename = fileURLToPath(import.meta.url);
Expand Down Expand Up @@ -221,49 +220,3 @@ export async function sendWsMessage(
};
});
}

export async function sendWsRequest(options: {
url?: string,
connection?: JsonRpcSocket,
request: JsonRpcRequest,
responseTimeout?: number,
}): Promise<JsonRpcResponse> {
const { url, connection: incomingConnection , request, responseTimeout } = options;
const connection = incomingConnection ?? await JsonRpcSocket.connect(url, { responseTimeout });
return connection.request(request);
}

/**
* A helper method for testing JSON RPC socket subscription requests to the DWN.
*
* If a connection is not provided, creates a new connection to the url provided.
* If no subscribe options are provided, creates a subscribe id.
* Attempts to subscribe and returns the response, close function and connection.
*/
export async function subscribeToMessageEvents(options: {
/** json rpc socket connection, mutually exclusive with url */
connection?: JsonRpcSocket,
/** url to connect to if no connection is provided */
url?: string,
/** the request to use for subscription */
request: JsonRpcRequest,
/** the message handler to use for incoming events */
messageHandler: EventSubscriptionHandler,
/** optional response timeout for new connections */
responseTimeout?: number,
}): Promise<{ close?: () => Promise<void>, response: JsonRpcResponse, connection?: JsonRpcSocket }> {
const { url, connection: incomingConnection, request, messageHandler, responseTimeout } = options;
const connection = incomingConnection ?? await JsonRpcSocket.connect(url, { responseTimeout });
request.subscribe ??= {
id: uuidv4(),
};

const { close, response } = await connection.subscribe(request, (response) => {
const { event } = response.result;
messageHandler(event);
});

return {
response, close, connection
}
}
53 changes: 26 additions & 27 deletions tests/ws-api.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ import {
import { config } from '../src/config.js';
import { WsApi } from '../src/ws-api.js';
import { getTestDwn } from './test-dwn.js';
import { createRecordsWriteMessage, sendWsMessage, sendHttpMessage, subscribeToMessageEvents, sendWsRequest } from './utils.js';
import { createRecordsWriteMessage, sendWsMessage, sendHttpMessage } from './utils.js';
import { HttpApi } from '../src/http-api.js';
import { JsonRpcSocket } from '../src/json-rpc-socket.js';


describe('websocket api', function () {
Expand Down Expand Up @@ -85,10 +86,9 @@ describe('websocket api', function () {
encodedData,
});

const response = await sendWsRequest({
url:'ws://127.0.0.1:9002',
request: dwnRequest,
});
const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
const response = await connection.request(dwnRequest);

expect(response.id).to.equal(requestId);
expect(response.error).to.not.be.undefined;
expect(response.error.code).to.equal(JsonRpcErrorCodes.InvalidParams);
Expand Down Expand Up @@ -117,11 +117,12 @@ describe('websocket api', function () {
target: alice.did,
});

const { response, close } = await subscribeToMessageEvents({
url : 'ws://127.0.0.1:9002',
request : dwnRequest,
messageHandler : subscriptionHandler
const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
const { response, close } = await connection.subscribe(dwnRequest, (response) => {
const { event } = response.result;
subscriptionHandler(event);
});

expect(response.error).to.be.undefined;
expect(response.result.reply.status.code).to.equal(200);
expect(close).to.not.be.undefined;
Expand Down Expand Up @@ -181,16 +182,18 @@ describe('websocket api', function () {
};

const requestId = uuidv4();
const dwnRequest = createJsonRpcRequest(requestId, 'rpc.subscribe.dwn.processMessage', {
const subscribeId = uuidv4();
const dwnRequest = createJsonRpcSubscribeRequest(requestId, 'rpc.subscribe.dwn.processMessage', {
message: message,
target: alice.did,
});
}, subscribeId);

const { response, close } = await subscribeToMessageEvents({
url : 'ws://127.0.0.1:9002',
request : dwnRequest,
messageHandler : subscriptionHandler
const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
const { response, close } = await connection.subscribe(dwnRequest, (response) => {
const { event } = response.result;
subscriptionHandler(event);
});

expect(response.error).to.be.undefined;
expect(response.result.reply.status.code).to.equal(200);
expect(close).to.not.be.undefined;
Expand Down Expand Up @@ -268,15 +271,11 @@ describe('websocket api', function () {
target: alice.did
}, subscribeId);

const { response, close, connection } = await subscribeToMessageEvents({
url : 'ws://127.0.0.1:9002',
request : dwnRequest,
messageHandler : subscriptionHandler
const connection = await JsonRpcSocket.connect('ws://127.0.0.1:9002');
const { close } = await connection.subscribe(dwnRequest, (response) => {
const { event } = response.result;
subscriptionHandler(event);
});
expect(response.error).to.be.undefined;
expect(response.result.reply.status.code).to.equal(200);
expect(close).to.not.be.undefined;


const { message: message2 } = await TestDataGenerator.generateRecordsSubscribe({ filter: { schema: 'bar/baz' }, author: alice });

Expand All @@ -287,11 +286,11 @@ describe('websocket api', function () {
target: alice.did
}, subscribeId);

const { response: response2 } = await subscribeToMessageEvents({
connection,
request: dwnRequest2,
messageHandler: subscriptionHandler,
const { response: response2 } = await connection.subscribe(dwnRequest2, (response) => {
const { event } = response.result;
subscriptionHandler(event);
});

expect(response2.error.code).to.equal(JsonRpcErrorCodes.InvalidParams);
expect(response2.error.message).to.contain(`${subscribeId} is in use by an active subscription`);

Expand Down

0 comments on commit f54fac2

Please sign in to comment.