UNPKG

json-rpc-dual-engine

Version:

JSON-RPC-2.0 client and server protocol-agnostic engine.

91 lines (90 loc) 3.32 kB
import { expect } from 'expect'; import { JsonRpcResponse } from './json-rpc-response.js'; import { describe, it } from 'node:test'; describe('JsonRpcResponse', () => { describe('isSuccess', () => { it('should return true for a success response', () => { const response = { jsonrpc: '2.0', result: 'some result', id: 1 }; expect(JsonRpcResponse.isSuccess(response)).toBe(true); }); it('should return false for an error response', () => { const response = { jsonrpc: '2.0', error: { code: 123, message: 'some error' }, id: 1 }; expect(JsonRpcResponse.isSuccess(response)).toBe(false); }); }); describe('isError', () => { it('should return true for an error response', () => { const response = { jsonrpc: '2.0', error: { code: 123, message: 'some error' }, id: 1 }; expect(JsonRpcResponse.isError(response)).toBe(true); }); it('should return false for a success response', () => { const response = { jsonrpc: '2.0', result: 'some result', id: 1 }; expect(JsonRpcResponse.isError(response)).toBe(false); }); }); describe('parse', () => { it('should parse a valid success response', () => { const message = JSON.stringify({ jsonrpc: '2.0', result: 'some result', id: 1 }); const response = JsonRpcResponse.parse(message); expect(JsonRpcResponse.isSuccess(response)).toBe(true); expect(response).toEqual({ jsonrpc: '2.0', result: 'some result', id: 1 }); }); it('should parse a valid error response', () => { const message = JSON.stringify({ jsonrpc: '2.0', error: { code: 123, message: 'some error' }, id: 1 }); const response = JsonRpcResponse.parse(message); expect(JsonRpcResponse.isError(response)).toBe(true); expect(response).toEqual({ jsonrpc: '2.0', error: { code: 123, message: 'some error', data: undefined }, id: 1 }); }); it('should throw an error for an invalid response', () => { const message = JSON.stringify({ jsonrpc: '2.0', result: 'some result' }); expect(() => JsonRpcResponse.parse(message)).toThrow(); }); it('should throw an error for a non-jsonrpc 2.0 response', () => { const message = JSON.stringify({ jsonrpc: '1.0', result: 'some result', id: 1 }); expect(() => JsonRpcResponse.parse(message)).toThrow(); }); it('should throw an error for a response that is not an object', () => { const message = 'not an object'; expect(() => JsonRpcResponse.parse(message)).toThrow(); }); }); });