def setUp(self): self.sc = Client(API_KEY, PROJECT_NUMBER)
class ClientTest(unittest.TestCase): def setUp(self): self.sc = Client(API_KEY, PROJECT_NUMBER) def test_client(self): with self.assertRaises(InvalidArgumentError) as ve: sc = Client(None, None) self.assertEqual(ve.exception.value, 'api_key must be a string') with self.assertRaises(InvalidArgumentError) as ve: sc = Client(1, None) self.assertEqual(ve.exception.value, 'api_key must be a string') with self.assertRaises(InvalidArgumentError) as ve: sc = Client(API_KEY, None) self.assertEqual(ve.exception.value, 'project_number must be a string') with self.assertRaises(InvalidArgumentError) as ve: sc = Client(API_KEY, 1) self.assertEqual(ve.exception.value, 'project_number must be a string') sc = Client(API_KEY, PROJECT_NUMBER) self.assertEqual(sc.api_key, API_KEY) self.assertEqual(sc.project_number, PROJECT_NUMBER) def test_send(self): with self.assertRaises(InvalidArgumentError) as ve: self.sc.send() self.assertEqual(ve.exception.value, "'to' or 'registration_ids' parameter must be set") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(to=1) self.assertEqual(ve.exception.value, "to must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=1) self.assertEqual(ve.exception.value, "registration_Ids must be a list") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids='test') self.assertEqual(ve.exception.value, "registration_Ids must be a list") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=[]) self.assertEqual(ve.exception.value, "registration_Ids must not be empty") test_list = [] for x in range(1001): test_list.append(x) with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=test_list) self.assertEqual(ve.exception.value, "registration_Ids can have at most 1000 items") test_list = [] for x in range(10): test_list.append(x) test_list.append('a') test_list.append('b') test_list.append('c') test_list.append('d') with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=test_list) self.assertEqual(ve.exception.value, "Items in registration_Ids must be strings") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], priority='test') self.assertEqual(ve.exception.value, "priority must be an integer between 0 - 10") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], priority=-1) self.assertEqual(ve.exception.value, "priority must be an integer between 0 - 10") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], priority=11) self.assertEqual(ve.exception.value, "priority must be an integer between 0 - 10") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], content_available='test') self.assertEqual(ve.exception.value, "content_available must be a boolean") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], collapse_key=1) self.assertEqual(ve.exception.value, "collapse_key must be an string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], delay_while_idle=1) self.assertEqual(ve.exception.value, "delay_while_idle must be a boolean") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], time_to_live='test') self.assertEqual(ve.exception.value, "time_to_live must be an integer measured in seconds") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], time_to_live=0) self.assertEqual(ve.exception.value, "time_to_live must be greater than zero") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], time_to_live=MAXIMUM_TIME_TO_LIVE+1) self.assertEqual(ve.exception.value, "time_to_live must be less than 4 weeks. The default is 4 weeks") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], restricted_package_name=1) self.assertEqual(ve.exception.value, "restricted_package_name must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], dry_run=1) self.assertEqual(ve.exception.value, "dry_run must be a boolean") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], data=1) self.assertEqual(ve.exception.value, "data must be a dictionary") with self.assertRaises(InvalidArgumentError) as ve: self.sc.send(registration_ids=['test'], notification=1) self.assertEqual(ve.exception.value, "notification must be a dictionary") def test_notify(self): with self.assertRaises(InvalidArgumentError) as ve: self.sc.notify() self.assertEqual(ve.exception.value, "'notification_key' is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.notify(notification_key=1) self.assertEqual(ve.exception.value, "'notification_key' must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.notify(notification_key='test', data='test') self.assertEqual(ve.exception.value, "data must be a dictionary") def test_create_notify_key(self): with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key() self.assertEqual(ve.exception.value, "notification_key_name is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key(notification_key_name=1) self.assertEqual(ve.exception.value, "notification_key_name must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key(notification_key_name='test') self.assertEqual(ve.exception.value, "registration_Ids is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key(notification_key_name='test', registration_Ids=1) self.assertEqual(ve.exception.value, "registration_Ids must be a list") with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key(notification_key_name='test', registration_Ids=[]) self.assertEqual(ve.exception.value, "registration_Ids must not be empty") test_list = [] for x in range(10): test_list.append(x) test_list.append('a') test_list.append('b') test_list.append('c') test_list.append('d') with self.assertRaises(InvalidArgumentError) as ve: self.sc.create_notify_key(notification_key_name='test', registration_Ids=test_list) self.assertEqual(ve.exception.value, "Items in registration_Ids must be strings") def test_add_regIds_to_notify_key(self): with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key() self.assertEqual(ve.exception.value, "notification_key_name is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key(notification_key_name=1) self.assertEqual(ve.exception.value, "notification_key_name must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key(notification_key_name='test') self.assertEqual(ve.exception.value, "notification_key is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key(notification_key_name='test', notification_key=1) self.assertEqual(ve.exception.value, "notification_key must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key( notification_key_name='test', notification_key='test') self.assertEqual(ve.exception.value, "registration_Ids is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key( notification_key_name='test', notification_key='test', registration_Ids='1') self.assertEqual(ve.exception.value, "registration_Ids must be a list") with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key( notification_key_name='test', notification_key='test', registration_Ids=[]) self.assertEqual(ve.exception.value, "registration_Ids must not be empty") test_list = [] for x in range(10): test_list.append(x) test_list.append('a') test_list.append('b') test_list.append('c') test_list.append('d') with self.assertRaises(InvalidArgumentError) as ve: self.sc.add_regids_to_notify_key( notification_key_name='test', notification_key='test', registration_Ids=test_list) self.assertEqual(ve.exception.value, "Items in registration_Ids must be strings") def test_remove_regIds_from_notify_key(self): with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key() self.assertEqual(ve.exception.value, "notification_key_name is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key(notification_key_name=1) self.assertEqual(ve.exception.value, "notification_key_name must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key(notification_key_name='test') self.assertEqual(ve.exception.value, "notification_key is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key(notification_key_name='test', notification_key=1) self.assertEqual(ve.exception.value, "notification_key must be a string") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key( notification_key_name='test', notification_key='test') self.assertEqual(ve.exception.value, "registration_Ids is required") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key( notification_key_name='test', notification_key='test', registration_Ids='1') self.assertEqual(ve.exception.value, "registration_Ids must be a list") with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key( notification_key_name='test', notification_key='test', registration_Ids=[]) self.assertEqual(ve.exception.value, "registration_Ids must not be empty") test_list = [] for x in range(10): test_list.append(x) test_list.append('a') test_list.append('b') test_list.append('c') test_list.append('d') with self.assertRaises(InvalidArgumentError) as ve: self.sc.remove_regIds_from_notify_key( notification_key_name='test', notification_key='test', registration_Ids=test_list) self.assertEqual(ve.exception.value, "Items in registration_Ids must be strings")