def test_list_subscriptions_no_paging(self): from google.cloud.pubsub.client import Client from google.cloud.pubsub.subscription import Subscription from google.cloud.pubsub.topic import Topic SUB_INFO = {'name': self.SUB_PATH, 'topic': self.TOPIC_PATH} RETURNED = {'subscriptions': [SUB_INFO]} connection = _Connection(RETURNED) creds = _Credentials() client = Client(project=self.PROJECT, credentials=creds) client.connection = connection api = self._makeOne(client) iterator = api.list_subscriptions(self.PROJECT) subscriptions = list(iterator) next_token = iterator.next_page_token # Check the token returned. self.assertIsNone(next_token) # Check the subscription object returned. self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, Subscription) self.assertEqual(subscription.name, self.SUB_NAME) self.assertIsInstance(subscription.topic, Topic) self.assertEqual(subscription.topic.name, self.TOPIC_NAME) self.assertIs(subscription._client, client) self.assertEqual(subscription._project, self.PROJECT) self.assertIsNone(subscription.ack_deadline) self.assertIsNone(subscription.push_endpoint) self.assertEqual(connection._called_with['method'], 'GET') path = '/%s' % (self.LIST_SUBSCRIPTIONS_PATH, ) self.assertEqual(connection._called_with['path'], path) self.assertEqual(connection._called_with['query_params'], {})
def test_list_subscriptions_with_paging(self): from google.cloud.pubsub.client import Client from google.cloud.pubsub.subscription import Subscription client = Client(project=self.PROJECT, credentials=object(), use_gax=False) SUB_NAME_1 = 'subscription_1' SUB_PATH_1 = 'projects/%s/subscriptions/%s' % (self.PROJECT, SUB_NAME_1) SUB_NAME_2 = 'subscription_2' SUB_PATH_2 = 'projects/%s/subscriptions/%s' % (self.PROJECT, SUB_NAME_2) SUBS_LIST = [SUB_PATH_1, SUB_PATH_2] PAGE_SIZE = 10 TOKEN = 'TOKEN' returned = { 'subscriptions': SUBS_LIST, } client.connection = _Connection(returned) topic = self._makeOne(self.TOPIC_NAME, client=client) iterator = topic.list_subscriptions(page_size=PAGE_SIZE, page_token=TOKEN) subscriptions = list(iterator) next_page_token = iterator.next_page_token self.assertEqual(len(subscriptions), 2) subscription = subscriptions[0] self.assertIsInstance(subscription, Subscription) self.assertEqual(subscriptions[0].name, SUB_NAME_1) self.assertIs(subscription.topic, topic) subscription = subscriptions[1] self.assertIsInstance(subscription, Subscription) self.assertEqual(subscriptions[1].name, SUB_NAME_2) self.assertIs(subscription.topic, topic) self.assertIsNone(next_page_token) # Verify the mock. called_with = client.connection._called_with self.assertEqual(len(called_with), 3) self.assertEqual(called_with['method'], 'GET') path = '/%s/subscriptions' % (self.TOPIC_PATH, ) self.assertEqual(called_with['path'], path) self.assertEqual(called_with['query_params'], { 'pageSize': PAGE_SIZE, 'pageToken': TOKEN })
def test_list_subscriptions_with_paging(self): from google.cloud.pubsub.client import Client from google.cloud.pubsub.subscription import Subscription client = Client(project=self.PROJECT, credentials=object(), use_gax=False) SUB_NAME_1 = 'subscription_1' SUB_PATH_1 = 'projects/%s/subscriptions/%s' % ( self.PROJECT, SUB_NAME_1) SUB_NAME_2 = 'subscription_2' SUB_PATH_2 = 'projects/%s/subscriptions/%s' % ( self.PROJECT, SUB_NAME_2) SUBS_LIST = [SUB_PATH_1, SUB_PATH_2] PAGE_SIZE = 10 TOKEN = 'TOKEN' returned = { 'subscriptions': SUBS_LIST, } client.connection = _Connection(returned) topic = self._makeOne(self.TOPIC_NAME, client=client) iterator = topic.list_subscriptions( page_size=PAGE_SIZE, page_token=TOKEN) subscriptions = list(iterator) next_page_token = iterator.next_page_token self.assertEqual(len(subscriptions), 2) subscription = subscriptions[0] self.assertIsInstance(subscription, Subscription) self.assertEqual(subscriptions[0].name, SUB_NAME_1) self.assertIs(subscription.topic, topic) subscription = subscriptions[1] self.assertIsInstance(subscription, Subscription) self.assertEqual(subscriptions[1].name, SUB_NAME_2) self.assertIs(subscription.topic, topic) self.assertIsNone(next_page_token) # Verify the mock. called_with = client.connection._called_with self.assertEqual(len(called_with), 3) self.assertEqual(called_with['method'], 'GET') path = '/%s/subscriptions' % (self.TOPIC_PATH,) self.assertEqual(called_with['path'], path) self.assertEqual(called_with['query_params'], {'pageSize': PAGE_SIZE, 'pageToken': TOKEN})
def test_list_subscriptions_missing_key(self): from google.cloud.pubsub.client import Client client = Client(project=self.PROJECT, credentials=object(), use_gax=False) client.connection = _Connection({}) topic = self._makeOne(self.TOPIC_NAME, client=client) iterator = topic.list_subscriptions() subscriptions = list(iterator) next_page_token = iterator.next_page_token self.assertEqual(len(subscriptions), 0) self.assertIsNone(next_page_token) # Verify the mock. called_with = client.connection._called_with self.assertEqual(len(called_with), 3) self.assertEqual(called_with['method'], 'GET') path = '/%s/subscriptions' % (self.TOPIC_PATH,) self.assertEqual(called_with['path'], path) self.assertEqual(called_with['query_params'], {})
def test_list_subscriptions_missing_key(self): from google.cloud.pubsub.client import Client client = Client(project=self.PROJECT, credentials=object(), use_gax=False) client.connection = _Connection({}) topic = self._makeOne(self.TOPIC_NAME, client=client) iterator = topic.list_subscriptions() subscriptions = list(iterator) next_page_token = iterator.next_page_token self.assertEqual(len(subscriptions), 0) self.assertIsNone(next_page_token) # Verify the mock. called_with = client.connection._called_with self.assertEqual(len(called_with), 3) self.assertEqual(called_with['method'], 'GET') path = '/%s/subscriptions' % (self.TOPIC_PATH, ) self.assertEqual(called_with['path'], path) self.assertEqual(called_with['query_params'], {})