@@ -24,14 +24,6 @@ var uuid = require('node-uuid');
2424var env = require ( '../../../system-test/env.js' ) ;
2525var pubsub = require ( '../' ) ( env ) ;
2626
27- function generateSubName ( ) {
28- return 'test-subscription-' + uuid . v4 ( ) ;
29- }
30-
31- function generateTopicName ( ) {
32- return 'test-topic-' + uuid . v4 ( ) ;
33- }
34-
3527describe ( 'pubsub' , function ( ) {
3628 var TOPIC_NAMES = [
3729 generateTopicName ( ) ,
@@ -51,6 +43,53 @@ describe('pubsub', function() {
5143 TOPICS [ 2 ] . name
5244 ] ;
5345
46+ function generateSubName ( ) {
47+ return 'test-subscription-' + uuid . v4 ( ) ;
48+ }
49+
50+ function generateTopicName ( ) {
51+ return 'test-topic-' + uuid . v4 ( ) ;
52+ }
53+
54+ function publishPop ( message , options , callback ) {
55+ if ( ! callback ) {
56+ callback = options ;
57+ options = { } ;
58+ }
59+
60+ options = options || { } ;
61+
62+ var topic = pubsub . topic ( generateTopicName ( ) ) ;
63+ var subscription = topic . subscription ( generateSubName ( ) ) ;
64+
65+ async . series ( [
66+ topic . create . bind ( topic ) ,
67+ subscription . create . bind ( subscription ) ,
68+ function ( callback ) {
69+ async . times ( 6 , function ( _ , callback ) {
70+ topic . publish ( message , options , callback ) ;
71+ } , callback ) ;
72+ }
73+ ] , function ( err ) {
74+ if ( err ) {
75+ callback ( err ) ;
76+ return ;
77+ }
78+
79+ subscription . pull ( {
80+ returnImmediately : true ,
81+ maxResults : 1
82+ } , function ( err , messages ) {
83+ if ( err ) {
84+ callback ( err ) ;
85+ return ;
86+ }
87+
88+ callback ( null , messages . pop ( ) ) ;
89+ } ) ;
90+ } ) ;
91+ }
92+
5493 before ( function ( done ) {
5594 // create all needed topics
5695 async . each ( TOPICS , function ( topic , cb ) {
@@ -128,15 +167,19 @@ describe('pubsub', function() {
128167 } ) ;
129168
130169 it ( 'should publish a message with attributes' , function ( done ) {
131- var topic = pubsub . topic ( TOPIC_NAMES [ 1 ] ) ;
132- topic . publish ( {
170+ var rawMessage = {
133171 data : 'raw message data' ,
134172 attributes : {
135- raw : true
173+ customAttribute : 'value'
136174 }
137- } , function ( err , messageIds ) {
175+ } ;
176+
177+ publishPop ( rawMessage , { raw : true } , function ( err , message ) {
138178 assert . ifError ( err ) ;
139- assert . strictEqual ( messageIds . length , 1 ) ;
179+
180+ assert . strictEqual ( message . data , rawMessage . data ) ;
181+ assert . deepEqual ( message . attributes , rawMessage . attributes ) ;
182+
140183 done ( ) ;
141184 } ) ;
142185 } ) ;
0 commit comments