Skip to content

Commit 4dbdb75

Browse files
committed
Add system test for 'subscription w/ deleted topic' case.
Fix bug in 'Subscription._require_client' exposed thereby.
1 parent 1fe6ba1 commit 4dbdb75

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

gcloud/pubsub/subscription.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def _require_client(self, client):
130130
:returns: The client passed in or the currently bound client.
131131
"""
132132
if client is None:
133-
client = self.topic._client
133+
client = self._client
134134
return client
135135

136136
def create(self, client=None):

system_tests/pubsub.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,25 @@ def test_subscription_iam_policy(self):
207207
policy.viewers.add(policy.user('jjg@google.com'))
208208
new_policy = subscription.set_iam_policy(policy)
209209
self.assertEqual(new_policy.viewers, policy.viewers)
210+
211+
def test_fetch_delete_subscription_w_deleted_topic(self):
212+
TO_DELETE = 'delete-me-%d' % (1000 * time.time(),)
213+
ORPHANED = 'orphaned-%d' % (1000 * time.time(),)
214+
topic = Config.CLIENT.topic(TO_DELETE)
215+
topic.create()
216+
subscription = topic.subscription(ORPHANED)
217+
subscription.create()
218+
topic.delete()
219+
220+
all_subs = []
221+
token = None
222+
while True:
223+
subs, token = Config.CLIENT.list_subscriptions(page_token=token)
224+
all_subs.extend(subs)
225+
if token is None:
226+
break
227+
228+
created = [subscription for subscription in all_subs
229+
if subscription.name == ORPHANED]
230+
self.assertEqual(len(created), 1)
231+
created[0].delete()

0 commit comments

Comments
 (0)