@@ -203,6 +203,48 @@ transportTests = (type) ->
203203 clients .sender .sendTo ' outqueue' , outQueue, payload, (err ) ->
204204 chai .expect (err).to .be .a ' null'
205205
206+ describe ' outqueue bound to inqueue then removed' , ->
207+ it ' sending to inqueue, show up on outqueue' , (done ) ->
208+ payload = { foo : ' bar922' }
209+ inQueue = ' inqueue922'
210+ outQueue = ' outqueue922'
211+ createConnectClients address, [' sender' , ' receiver' ], (err , clients ) ->
212+ createQueues [
213+ [ clients .receiver , ' inqueue' , inQueue ]
214+ [ clients .sender , ' outqueue' , outQueue ]
215+ ], (err ) ->
216+ chai .expect (err).to .not .exist
217+
218+ binding = { type : ' pubsub' , src : outQueue, tgt : inQueue }
219+ bindingRemoved = false
220+
221+ onReceive = (msg ) ->
222+ if bindingRemoved
223+ done new Error " Received data on removed binding"
224+ done = null
225+ return
226+
227+ clients .receiver .ackMessage msg
228+ chai .expect (msg).to .include .keys ' data'
229+ chai .expect (msg .data ).to .eql payload
230+ bindingRemoved = true
231+ broker .removeBinding binding, (err ) ->
232+ chai .expect (err).to .be .a ' null'
233+ clients .sender .sendTo ' outqueue' , outQueue, payload, (err ) ->
234+ chai .expect (err).to .be .a ' null'
235+ setTimeout () ->
236+ done null if done
237+ done = null
238+ return
239+ , 300
240+
241+ clients .receiver .subscribeToQueue inQueue, onReceive, (err ) ->
242+ chai .expect (err).to .be .a ' null'
243+ broker .addBinding binding, (err ) ->
244+ chai .expect (err).to .be .a ' null'
245+ clients .sender .sendTo ' outqueue' , outQueue, payload, (err ) ->
246+ chai .expect (err).to .be .a ' null'
247+
206248
207249 describe ' multiple outqueues bound to one inqueue' , ->
208250 it ' all sent on outqueues shows up on inqueue' , (done ) ->
0 commit comments