Skip to content

Commit 6793853

Browse files
committed
tests: Check data subscription support
1 parent f1f2e58 commit 6793853

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

spec/01transport.coffee

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -363,6 +364,53 @@ 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+
366414
describe 'Transport', ->
367415
Object.keys(transports).forEach (type) =>
368416
describe "#{type}", () ->

0 commit comments

Comments
 (0)