Add tests for APNS message.

This commit is contained in:
Umair Khan 2016-08-03 14:11:25 +05:00 committed by Tim Abbott
parent 882bb5558b
commit 2ab796aeb5
1 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,40 @@
import mock
from django.test import TestCase
from django.conf import settings
from zerver.models import PushDeviceToken, UserProfile
from zerver.models import get_user_profile_by_email
from zerver.lib import push_notifications as apn
from zerver.lib.redis_utils import get_redis_client
class PushNotificationTest(TestCase):
def setUp(self):
email = 'hamlet@zulip.com'
self.redis_client = get_redis_client()
apn.connection = apn.get_connection('fake-cert', 'fake-key')
apn.dbx_connection = apn.get_connection('fake-cert', 'fake-key')
self.user_profile = get_user_profile_by_email(email)
self.tokens = ['aaaa', 'bbbb']
for token in self.tokens:
PushDeviceToken.objects.create(
kind=PushDeviceToken.APNS,
token=apn.hex_to_b64(token),
user=self.user_profile,
ios_app_id=settings.ZULIP_IOS_APP_ID)
def tearDown(self):
for i in [100, 200]:
self.redis_client.delete(apn.get_apns_key(i))
class APNsMessageTest(PushNotificationTest):
@mock.patch('random.getrandbits', side_effect=[100, 200])
def test_apns_message(self, mock_getrandbits):
apn.APNsMessage(self.user_profile, self.tokens, alert="test")
data = self.redis_client.hgetall(apn.get_apns_key(100))
self.assertEqual(data['token'], 'aaaa')
self.assertEqual(int(data['user_id']), self.user_profile.id)
data = self.redis_client.hgetall(apn.get_apns_key(200))
self.assertEqual(data['token'], 'bbbb')
self.assertEqual(int(data['user_id']), self.user_profile.id)