@@ -99,6 +99,7 @@ transportTests = (type) ->
9999 broker = null
100100
101101 describeIfRoundRobinSupport = if type == ' AMQP' then describe else describe .skip
102+ describeIfSubscribeSupport = if type != ' AMQP' then describe else describe .skip
102103
103104 beforeEach (done ) ->
104105 broker = transport .getBroker address
@@ -149,8 +150,8 @@ transportTests = (type) ->
149150
150151 clients .receiver .subscribeToQueue sharedQueue, onReceive, (err ) ->
151152 chai .expect (err).to .be .a ' null'
152- clients .sender .sendTo ' outqueue' , sharedQueue, payload, (err ) ->
153- chai .expect (err).to .be .a ' null'
153+ clients .sender .sendTo ' outqueue' , sharedQueue, payload, (err ) ->
154+ chai .expect (err).to .be .a ' null'
154155
155156
156157 describe ' inqueue==outqueue with binding' , ->
@@ -173,8 +174,8 @@ transportTests = (type) ->
173174
174175 clients .receiver .subscribeToQueue sharedQueue, onReceive, (err ) ->
175176 chai .expect (err).to .be .a ' null'
176- clients .sender .sendTo ' outqueue' , sharedQueue, payload, (err ) ->
177- chai .expect (err).to .be .a ' null'
177+ clients .sender .sendTo ' outqueue' , sharedQueue, payload, (err ) ->
178+ chai .expect (err).to .be .a ' null'
178179
179180
180181 describe ' outqueue bound to inqueue' , ->
@@ -200,8 +201,8 @@ transportTests = (type) ->
200201
201202 clients .receiver .subscribeToQueue inQueue, onReceive, (err ) ->
202203 chai .expect (err).to .be .a ' null'
203- clients .sender .sendTo ' outqueue' , outQueue, payload, (err ) ->
204- chai .expect (err).to .be .a ' null'
204+ clients .sender .sendTo ' outqueue' , outQueue, payload, (err ) ->
205+ chai .expect (err).to .be .a ' null'
205206
206207
207208 describe ' multiple outqueues bound to one inqueue' , ->
@@ -363,6 +364,100 @@ transportTests = (type) ->
363364 it ' only NACKed message is sent to deadletter' , ->
364365 chai .expect (received .deadletter ).to .eql [ { foo : ' nack' } ]
365366
367+ describeIfSubscribeSupport ' subscribing to bound topics' , ->
368+ sendQueue = ' sub-send-36'
369+ receiveQueue = ' sub-receive-36'
370+ binding = { type : ' pubsub' , src : sendQueue, tgt : receiveQueue }
371+ connectionData = []
372+ clients = null
373+
374+ # Should be a before, but the 'beforeEach' of higher scope are ran afterwards...
375+ setup = (done ) ->
376+ createConnectClients address, [' sender' , ' receiver' ], (err , c ) ->
377+ clients = c
378+ createQueues [
379+ [ clients .receiver , ' inqueue' , receiveQueue ]
380+ [ clients .sender , ' outqueue' , sendQueue ]
381+ ], (err ) ->
382+ chai .expect (err).to .not .exist
383+ broker .addBinding binding, (err ) ->
384+ chai .expect (err).to .be .a ' null'
385+ return done null
386+
387+ it ' should provide data sent on connection' , (done ) ->
388+ payloads =
389+ one : { foo : ' sub-96' }
390+ two : { bar : ' sub-97' }
391+
392+ onData = (bind , data ) ->
393+ chai .expect (bind .src ).to .equal binding .src
394+ chai .expect (bind .tgt ).to .equal binding .tgt
395+ connectionData .push data
396+ # wait until we've gotten two packets
397+ if connectionData .length == 2
398+ [one , two ] = connectionData
399+ chai .expect (one).to .eql payloads .one
400+ chai .expect (two).to .eql payloads .two
401+ return done null
402+ else if connectionData .length > 2
403+ return done new Error " Got more data than expected"
404+
405+ setup (err ) ->
406+ return done err if err
407+ broker .subscribeData binding, onData, (err ) ->
408+ return done err if err
409+ clients .sender .sendTo ' outqueue' , sendQueue, payloads .one , (err ) ->
410+ return done err if err
411+ clients .sender .sendTo ' outqueue' , sendQueue, payloads .two , (err ) ->
412+ return done err if err
413+
414+ describeIfSubscribeSupport ' subscribing to binding with srcQueue==tgtQueue' , ->
415+ sendQueue = ' sub-shared-37'
416+ receiveQueue = sendQueue
417+ binding = { type : ' pubsub' , src : sendQueue, tgt : receiveQueue }
418+ connectionData = []
419+ clients = null
420+
421+ # Should be a before, but the 'beforeEach' of higher scope are ran afterwards...
422+ setup = (done ) ->
423+ createConnectClients address, [' sender' , ' receiver' ], (err , c ) ->
424+ clients = c
425+ createQueues [
426+ [ clients .receiver , ' inqueue' , receiveQueue ]
427+ [ clients .sender , ' outqueue' , sendQueue ]
428+ ], (err ) ->
429+ chai .expect (err).to .not .exist
430+ broker .addBinding binding, (err ) ->
431+ chai .expect (err).to .be .a ' null'
432+ return done null
433+
434+ it ' should provide data sent on connection' , (done ) ->
435+ payloads =
436+ one : { foo : ' sub-106' }
437+ two : { bar : ' sub-107' }
438+
439+ onData = (bind , data ) ->
440+ chai .expect (bind .src ).to .equal binding .src
441+ chai .expect (bind .tgt ).to .equal binding .tgt
442+ connectionData .push data
443+ # wait until we've gotten two packets
444+ if connectionData .length == 2
445+ [one , two ] = connectionData
446+ chai .expect (one).to .eql payloads .one
447+ chai .expect (two).to .eql payloads .two
448+ return done null
449+ else if connectionData .length > 2
450+ return done new Error " Got more data than expected"
451+
452+ setup (err ) ->
453+ return done err if err
454+ broker .subscribeData binding, onData, (err ) ->
455+ return done err if err
456+ clients .sender .sendTo ' outqueue' , sendQueue, payloads .one , (err ) ->
457+ return done err if err
458+ clients .sender .sendTo ' outqueue' , sendQueue, payloads .two , (err ) ->
459+ return done err if err
460+
366461describe ' Transport' , ->
367462 Object .keys (transports).forEach (type) =>
368463 describe " #{ type} " , () ->
0 commit comments