From df0d29aaff1ec03c72b4cd3ef53407f34f8ec521 Mon Sep 17 00:00:00 2001 From: Umair Khan Date: Thu, 11 May 2017 11:32:11 +0500 Subject: [PATCH] push_notifications: Add response_listener tests. --- zerver/tests/test_push_notifications.py | 49 +++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/zerver/tests/test_push_notifications.py b/zerver/tests/test_push_notifications.py index 7557076f50..d463c9d9cc 100644 --- a/zerver/tests/test_push_notifications.py +++ b/zerver/tests/test_push_notifications.py @@ -232,6 +232,21 @@ class PushNotificationTest(ZulipTestCase): user=self.user_profile, ios_app_id=settings.ZULIP_IOS_APP_ID) + server = RemoteZulipServer.objects.create( + uuid='remote-server', + api_key="magic_secret_api_key", + hostname="demo.example.com", + last_updated=now() + ) + self.remote_tokens = [u'cccc'] + for token in self.remote_tokens: + RemotePushDeviceToken.objects.create( + kind=RemotePushDeviceToken.APNS, + token=apn.hex_to_b64(token), + user_id=self.user_profile.id, + server=server, + ) + def tearDown(self): # type: () -> None for i in [100, 200]: @@ -293,6 +308,40 @@ class ResponseListenerTest(PushNotificationTest): self.assertEqual(PushDeviceToken.objects.filter( user=self.user_profile, token=b64_token).count(), 0) + @mock.patch('logging.warn') + def test_error_code_eight_when_token_doesnt_exist(self, mock_warn): + # type: (mock.MagicMock) -> None + cache_value = self.get_cache_value() + cache_value['token'] = 'cccc' + self.redis_client.hmset(apn.get_apns_key(100), cache_value) + err_rsp = self.get_error_response(identifier=100, status=8) + apn.response_listener(err_rsp) + self.assertEqual(PushDeviceToken.objects.all().count(), 2) + + @mock.patch('logging.warn') + def test_error_code_eight_with_zilencer(self, mock_warn): + # type: (mock.MagicMock) -> None + cache_value = self.get_cache_value() + cache_value['token'] = 'cccc' + self.redis_client.hmset(apn.get_apns_key(100), cache_value) + err_rsp = self.get_error_response(identifier=100, status=8) + self.assertEqual(RemotePushDeviceToken.objects.all().count(), 1) + with self.settings(ZILENCER_ENABLED=True): + apn.response_listener(err_rsp) + self.assertEqual(RemotePushDeviceToken.objects.all().count(), 0) + + @mock.patch('logging.warn') + def test_error_code_eight_with_zilencer_when_token_doesnt_exist(self, mock_warn): + # type: (mock.MagicMock) -> None + cache_value = self.get_cache_value() + cache_value['token'] = 'dddd' + self.redis_client.hmset(apn.get_apns_key(100), cache_value) + err_rsp = self.get_error_response(identifier=100, status=8) + self.assertEqual(RemotePushDeviceToken.objects.all().count(), 1) + with self.settings(ZILENCER_ENABLED=True): + apn.response_listener(err_rsp) + self.assertEqual(RemotePushDeviceToken.objects.all().count(), 1) + class TestPushApi(ZulipTestCase): def test_push_api(self): # type: () -> None