Better ErrorHandler and more tests
This commit is contained in:
+89
-38
@@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
*/
|
||||
Reference in New Issue
Block a user