diff --git a/lib/pubsub/topic.js b/lib/pubsub/topic.js index fcc6f323040..179ff534888 100644 --- a/lib/pubsub/topic.js +++ b/lib/pubsub/topic.js @@ -152,7 +152,7 @@ Topic.prototype.publish = function(messages, callback) { }; /** - * Delete the topic. + * Delete the topic. This will also delete any subscriptions to this topic. * * @param {function=} callback - The callback function. * @@ -190,7 +190,13 @@ Topic.prototype.delete = function(callback) { * }, function(err, subscriptions, nextQuery) {}); */ Topic.prototype.getSubscriptions = function(query, callback) { + if (util.is(query, 'function')) { + callback = query; + query = {}; + } + query.query = 'pubsub.googleapis.com/topic in (' + this.name + ')'; + this.pubsub.getSubscriptions(query, callback); }; diff --git a/regression/pubsub.js b/regression/pubsub.js index 9afcfe84c5b..2529f06a027 100644 --- a/regression/pubsub.js +++ b/regression/pubsub.js @@ -20,6 +20,7 @@ var assert = require('assert'); var async = require('async'); +var uuid = require('node-uuid'); var env = require('./env.js'); var gcloud = require('../lib')(env); @@ -28,8 +29,20 @@ var Subscription = require('../lib/pubsub/subscription.js'); var pubsub = gcloud.pubsub(); +function generateTopicName() { + return 'test-topic-' + uuid.v4(); +} + +function generateSubName() { + return 'test-subscription-' + uuid.v4(); +} + describe('pubsub', function() { - var topicNames = ['topic1', 'topic2', 'topic3']; + var topicNames = [ + generateTopicName(), + generateTopicName(), + generateTopicName() + ]; function deleteAllTopics(callback) { // TODO: Handle pagination. @@ -91,45 +104,21 @@ describe('pubsub', function() { }); describe('Subscription', function() { - var TOPIC_NAME = 'test-topic'; + var TOPIC_NAME = generateTopicName(); var subscriptions = [ { - name: 'sub1', + name: generateSubName(), options: { ackDeadlineSeconds: 30 } }, { - name: 'sub2', + name: generateSubName(), options: { ackDeadlineSeconds: 60 } } ]; var topic; - function deleteAllTopics(callback) { - pubsub.getTopics(function(err, topics) { - if (err) { - callback(err); - return; - } - async.parallel(topics.map(function(topic) { - return topic.delete.bind(topic); - }), callback); - }); - } - - function deleteAllSubscriptions(callback) { - pubsub.getSubscriptions(function(err, subs) { - if (err) { - callback(err); - return; - } - async.parallel(subs.map(function(sub) { - return sub.delete.bind(sub); - }), callback); - }); - } - before(function(done) { - async.parallel([deleteAllTopics, deleteAllSubscriptions], function(err) { + deleteAllTopics(function(err) { assert.ifError(err); // Create a new test topic. pubsub.createTopic(TOPIC_NAME, function(err, newTopic) { diff --git a/regression/storage.js b/regression/storage.js index dc8f7efc4d7..af5946380d4 100644 --- a/regression/storage.js +++ b/regression/storage.js @@ -370,7 +370,7 @@ describe('storage', function() { file.download(function(err, remoteContents) { assert.ifError(err); - assert.equal(fileContents, remoteContents); + assert.equal(String(fileContents), String(remoteContents)); done(); }); }); diff --git a/test/pubsub/topic.js b/test/pubsub/topic.js index b6ad21d2db3..06138672bd6 100644 --- a/test/pubsub/topic.js +++ b/test/pubsub/topic.js @@ -211,6 +211,15 @@ describe('Topic', function() { }; topic.getSubscriptions({}, assert.ifError); }); + + it('should attach scoped topic query without a query', function(done) { + topic.pubsub.getSubscriptions = function(q) { + assert.equal( + q.query, 'pubsub.googleapis.com/topic in (' + topic.name + ')'); + done(); + }; + topic.getSubscriptions(assert.ifError); + }); }); describe('subscribe', function() {