Better ErrorHandler and more tests

This commit is contained in:
2020-01-20 00:01:25 +01:00
parent cbefba6625
commit c4e280077b
6 changed files with 162 additions and 84 deletions
+89 -38
View File
@@ -2,6 +2,8 @@ import { describe, it, Func } from "mocha";
import { RPCServer, RPCSocket, SubscriptionResponse, makeSubResponse } from '../Index'
import * as uuidv4 from "uuid/v4"
import { doesNotReject } from "assert";
import { Socket } from "dgram";
const add = (...args:number[]) => {return args.reduce((a,b)=>a+b, 0)}
function makeServer(){
@@ -284,8 +286,23 @@ describe('Sesame should unlock the socket', () => {
const sock = new RPCSocket(21004, "localhost")
sock.connect<SesameTestIfc>( /* no sesame */).then(async (c) => {
c.test.checkCandy().then(d => {
if(d === candy)
done("should not be able to get candy")
done()
}).catch(e => {
//console.log("EXPECTED CLIENT EXCEPTION", String(e));
done()
}).finally(() => {
sock.destroy()
})
})
})
it('should fail with wrong sesame', (done) => {
const sock = new RPCSocket(21004, "localhost")
sock.connect<SesameTestIfc>('abasd').then(async (c) => {
c.test.checkCandy().then(d => {
done("should not be able to get candy")
}).catch(e => {
//console.log("EXPECTED CLIENT EXCEPTION", String(e));
done()
}).finally(() => {
sock.destroy()
@@ -300,7 +317,7 @@ describe('Sesame should unlock the socket', () => {
}
}).then(d => {
if(d.result !== 'Success')
done('expected valid response')
done('unexpected valid response')
client.test.checkCandy()
})
@@ -326,42 +343,76 @@ describe('Sesame should unlock the socket', () => {
})
})
/*
class myServer{
server = new RPCServer(21004, [ {
name: 'createUser' as 'createUser',
exportRPCs: () => [{
name: 'createUser' as 'createUser',
call: this.createUser
}]
}
])
createUser = async( user: {a:any,b:any}) => {
console.log(user)
return user
}
}
describe('Should pass the createUser edge case', ()=>{
let server
before(()=>{
server = new myServer()
})
after(()=>{
server.server.destroy()
})
it("should work", async ()=>{
let sock = new RPCSocket(21004, 'localhost')
let client = await sock.connect()
client["createUser"]["createUser"]({
a:'a',
b:'b'
}).then(console.log)
})
describe('Error handling', ()=>{
let createUser = async( user: {a:any,b:any}) => {
throw new Error("BAD BAD BAD")
}
it("RPC throws on client without handler", (done)=>{
let server = new RPCServer(21004, [ {
name: 'createUser' as 'createUser',
exportRPCs: () => [{
name: 'createUser' as 'createUser',
call: createUser
}]}], {
})
let sock = new RPCSocket(21004, 'localhost')
sock.connect().then((cli) => {
cli["createUser"]["createUser"]({
a:'a',
b:'b'
})
.then(r => {
if(r != null)
done("UNEXPECTED RESULT " + r)
})
.catch((e) => {
//console.log("EXPECTED CLIENT EXCEPTION", String(e));
done()
})
.finally(() => {
sock.destroy()
server.destroy()
})
})
})
it("RPC throws server with handler", (done)=>{
let server = new RPCServer(21004, [ {
name: 'createUser' as 'createUser',
exportRPCs: () => [{
name: 'createUser' as 'createUser',
call: createUser
}]}], {
errorHandler: (socket, e) => {
//console.log("EXPECTED SERVER EXCEPTION", String(e));
done()
}
})
let sock = new RPCSocket(21004, 'localhost')
sock.connect().then((cli) => {
cli["createUser"]["createUser"]({
a:'a',
b:'b'
})
.then(r => {
if(r != null)
done("UNEXPECTED RESULT " + r)
})
.catch((e) => {
done("UNEXPECTED CLIENT ERROR " + e)
done(e)
})
.finally(() => {
sock.destroy()
server.destroy()
})
})
})
})
*/