@@ -18,7 +18,7 @@ test('Api', async (t) => {
1818 const callClient = server . open ( client . message )
1919 const promise = callClient ( 2 , 5 )
2020
21- t . deepEqual ( Object . keys ( server ) . length , 5 )
21+ t . deepEqual ( Object . keys ( server ) . length , 4 )
2222
2323 t . deepEqual ( Object . keys ( promise ) . length , 5 )
2424 t . true ( promise instanceof Promise )
@@ -89,8 +89,20 @@ test('Response (reject or resolve must delete request)', async (t) => {
8989} )
9090
9191test ( 'Passing same functions should not create a new one' , async ( t ) => {
92+ function rpcFilter ( ) {
93+ const rpcs = { }
94+ return ( { rpc, function_id } ) => {
95+ if ( rpcs . hasOwnProperty ( function_id ) ) {
96+ return rpcs [ function_id ]
97+ } else {
98+ rpcs [ function_id ] = rpc
99+ return rpc
100+ }
101+ }
102+ }
103+
92104 const server = createNode ( )
93- const client = createNode ( )
105+ const client = createNode ( { rpcFilter : rpcFilter ( ) } )
94106
95107 // Client side
96108 const callServer = client . open (
@@ -108,25 +120,6 @@ test('Passing same functions should not create a new one', async (t) => {
108120 callClient ( repeated , repeated , receiveFromClient )
109121} )
110122
111- test ( 'Sending remote functions that is from the same node must be replaced as null' , async ( t ) => {
112- const server = createNode ( )
113- const client = createNode ( )
114-
115- // server side
116- server . open ( client . message , ( ...args ) => {
117- t . is ( args . length , 3 )
118- t . is ( args [ 0 ] , null )
119- t . is ( typeof args [ 1 ] , 'function' )
120- t . is ( typeof args [ 2 ] , 'object' )
121- return args [ 1 ]
122- } )
123-
124- // client side
125- const callServer = client . open ( server . message )
126- const resu = await callServer ( callServer , ( ) => { } )
127- t . is ( resu , null )
128- } )
129-
130123test ( 'Testing messages' , async ( t ) => {
131124 const serdes = { serialize : ( m ) => m , deserialize : ( m ) => m }
132125 const server = createNode ( serdes )
@@ -203,7 +196,7 @@ test('Using reject', async (t) => {
203196 t . is ( Object . keys ( client . requests ) . length , 0 )
204197} )
205198
206- test ( 'Using stub ' , async ( t ) => {
199+ test ( 'Using push ' , async ( t ) => {
207200 const server = createNode ( )
208201 const client = createNode ( )
209202 server . open ( client . message , ( ...args ) => {
@@ -212,29 +205,10 @@ test('Using stub', async (t) => {
212205 } )
213206 const callServer = client . open ( server . message )
214207 t . is ( Object . keys ( client . requests ) . length , 0 )
215- t . is ( callServer . stub ( ) , undefined )
208+ t . is ( callServer . push ( ) , undefined )
216209 t . is ( Object . keys ( client . requests ) . length , 0 )
217210} )
218211
219- test ( 'Sending remote stub functions that is from the same node must be replaced as null' , async ( t ) => {
220- const server = createNode ( )
221- const client = createNode ( )
222-
223- // server side
224- server . open ( client . message , ( ...args ) => {
225- t . is ( args . length , 3 )
226- t . is ( args [ 0 ] , null )
227- t . is ( typeof args [ 1 ] , 'function' )
228- t . is ( typeof args [ 2 ] , 'object' )
229- return args [ 1 ]
230- } )
231-
232- // client side
233- const callServer = client . open ( server . message )
234- const resu = await callServer ( callServer . stub , ( ) => { } )
235- t . is ( resu , null )
236- } )
237-
238212test ( 'Calling functions from client to server with another node in the middle' , async ( t ) => {
239213 // connection 1
240214 const server = createNode ( )
@@ -267,45 +241,19 @@ test('Calling functions from client to server with another node in the middle',
267241 t . is ( result , 10 )
268242} )
269243
270- test ( 'Limiting remote functions' , async ( t ) => {
271- const server = createNode ( {
272- createRemoteFunctionFilter : ( ) => server . remote_functions . size < 6 ,
273- } )
274- t . is ( server . remote_functions . size , 0 )
244+ test ( 'rpc is created if rpcFilter returns the rpc itself' , async ( t ) => {
245+ const n = Math . random ( )
246+ const server = createNode ( { rpcFilter : ( ) => n } )
275247 const client = createNode ( )
276- server . open ( client . message , ( fn , isLast ) => {
277- if ( isLast ) t . is ( fn , null )
278- else t . is ( typeof fn , 'function' )
248+ const callClient = server . open ( client . message , ( fn ) => {
249+ t . is ( fn , n )
279250 } )
251+ t . is ( callClient , n )
280252 const callServer = client . open ( server . message )
281- t . is ( server . remote_functions . size , 2 )
282- await callServer ( ( ) => { } , false )
283- t . is ( server . remote_functions . size , 4 )
284- await callServer ( ( ) => { } , false )
285- t . is ( server . remote_functions . size , 6 )
286- await callServer ( ( ) => { } , true )
287- t . is ( server . remote_functions . size , 6 )
288- } )
289-
290- test ( 'Limiting remote functions to 0' , async ( t ) => {
291- const server = createNode ( { createRemoteFunctionFilter : ( ) => false } )
292- const client = createNode ( )
293- const callClient = server . open ( client . message , ( fn ) => fn )
294- t . is ( callClient , null )
295- const callServer = client . open ( server . message )
296- await callServer ( ( ) => { } )
297- t . is ( server . remote_functions . size , 0 )
298- t . is ( client . remote_functions . size , 2 )
299- await callServer ( ( ) => { } )
300- t . is ( client . remote_functions . size , 2 )
301-
302- // faking calls
303- t . is ( server . message ( JSON . stringify ( [ 111 , 0 ] ) ) , true )
304- t . is ( server . message ( JSON . stringify ( [ 222 , 1 ] ) ) , false )
305- t . is ( client . message ( JSON . stringify ( [ 222 , 0 ] ) ) , false )
253+ callServer ( ( ) => { } )
306254} )
307255
308- test ( 'createRemoteFunctionFilter API' , async ( t ) => {
256+ test ( 'rpcFilter API' , async ( t ) => {
309257 function login ( { value, fn } ) {
310258 t . is ( typeof fn , 'function' )
311259 }
@@ -317,7 +265,8 @@ test('createRemoteFunctionFilter API', async (t) => {
317265 }
318266 }
319267
320- const createRemoteFunctionFilter = ( {
268+ const rpcFilter = ( {
269+ rpc,
321270 node,
322271 function_id,
323272 function_creator,
@@ -346,9 +295,9 @@ test('createRemoteFunctionFilter API', async (t) => {
346295 t . is ( caller , login )
347296 t . deepEqual ( path , [ 0 , 'fn' ] )
348297 }
349- return true
298+ return rpc
350299 }
351- const server = createNode ( { createRemoteFunctionFilter } )
300+ const server = createNode ( { rpcFilter } )
352301 const client = createNode ( )
353302 server . ENV = 'SERVER'
354303 client . ENV = 'CLIENT'
0 commit comments