@@ -7,7 +7,7 @@ var redis = config.redis;
77
88describe ( "return_buffers" , function ( ) {
99
10- helper . allTests ( function ( parser , ip ) {
10+ helper . allTests ( function ( parser , ip , basicArgs ) {
1111
1212 describe ( "using " + parser + " and " + ip , function ( ) {
1313 var client ;
@@ -229,6 +229,58 @@ describe("return_buffers", function () {
229229 } ) ;
230230 } ) ;
231231 } ) ;
232+
233+ describe ( 'publish/subscribe' , function ( done ) {
234+ var pub ;
235+ var sub ;
236+ var channel = "test channel" ;
237+ var message = new Buffer ( "test message" ) ;
238+
239+ var args = config . configureClient ( parser , ip , {
240+ return_buffers : true
241+ } ) ;
242+
243+ beforeEach ( function ( done ) {
244+ var pubConnected ;
245+ var subConnected ;
246+
247+ pub = redis . createClient . apply ( redis . createClient , basicArgs ) ;
248+ sub = redis . createClient . apply ( redis . createClient , args ) ;
249+ pub . once ( "connect" , function ( ) {
250+ pub . flushdb ( function ( ) {
251+ pubConnected = true ;
252+ if ( subConnected ) {
253+ done ( ) ;
254+ }
255+ } ) ;
256+ } ) ;
257+ sub . once ( "connect" , function ( ) {
258+ subConnected = true ;
259+ if ( pubConnected ) {
260+ done ( ) ;
261+ }
262+ } ) ;
263+ } ) ;
264+
265+ it ( 'receives buffer messages' , function ( done ) {
266+ sub . on ( "subscribe" , function ( chnl , count ) {
267+ pub . publish ( channel , message ) ;
268+ } ) ;
269+
270+ sub . on ( "message" , function ( chnl , msg ) {
271+ assert . strictEqual ( true , Buffer . isBuffer ( msg ) ) ;
272+ assert . strictEqual ( "<Buffer 74 65 73 74 20 6d 65 73 73 61 67 65>" , msg . inspect ( ) ) ;
273+ return done ( ) ;
274+ } ) ;
275+
276+ sub . subscribe ( channel ) ;
277+ } ) ;
278+
279+ afterEach ( function ( ) {
280+ sub . end ( ) ;
281+ pub . end ( ) ;
282+ } ) ;
283+ } ) ;
232284 } ) ;
233285 } ) ;
234- } ) ;
286+ } ) ;
0 commit comments