-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest_push.py
More file actions
127 lines (98 loc) · 4.67 KB
/
test_push.py
File metadata and controls
127 lines (98 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- coding: utf-8 -*-
import json
import unittest
from mock import mock
from syncano.models import APNSDevice, APNSMessage, GCMDevice, GCMMessage
class ScriptTestCase(unittest.TestCase):
@mock.patch('syncano.models.GCMDevice._get_connection')
def test_gcm_device(self, connection_mock):
model = GCMDevice(
instance_name='test',
label='example label',
registration_id=86152312314401555,
device_id='10000000001',
)
connection_mock.return_value = connection_mock
connection_mock.request.return_value = {'registration_id': 86152312314401555}
self.assertFalse(connection_mock.called)
self.assertFalse(connection_mock.request.called)
model.save()
self.assertTrue(connection_mock.called)
self.assertTrue(connection_mock.request.called)
connection_mock.assert_called_once_with()
connection_mock.request.assert_called_once_with(
'POST', '/v1.1/instances/test/push_notifications/gcm/devices/',
data={"registration_id": '86152312314401555', "device_id": "10000000001", "is_active": True,
"label": "example label"}
)
model.links = 'something' # to Falsify is_new()
model.delete()
connection_mock.request.assert_called_with(
'DELETE', '/v1.1/instances/test/push_notifications/gcm/devices/86152312314401555/'
)
@mock.patch('syncano.models.APNSDevice._get_connection')
def test_apns_device(self, connection_mock):
# just mock test - values here should be different;
model = APNSDevice(
instance_name='test',
label='example label',
registration_id=86152312314401555,
device_id='10000000001',
)
connection_mock.return_value = connection_mock
connection_mock.request.return_value = {'registration_id': 86152312314401555}
self.assertFalse(connection_mock.called)
self.assertFalse(connection_mock.request.called)
model.save()
self.assertTrue(connection_mock.called)
self.assertTrue(connection_mock.request.called)
connection_mock.assert_called_once_with()
connection_mock.request.assert_called_once_with(
'POST', '/v1.1/instances/test/push_notifications/apns/devices/',
data={"registration_id": '86152312314401555', "device_id": "10000000001", "is_active": True,
"label": "example label"}
)
model.links = 'something' # to Falsify is_new()
model.delete()
connection_mock.request.assert_called_with(
'DELETE', '/v1.1/instances/test/push_notifications/apns/devices/86152312314401555/'
)
@mock.patch('syncano.models.GCMMessage._get_connection')
def test_gcm_message(self, connection_mock):
model = GCMMessage(
instance_name='test',
content={'data': 'some data'}
)
connection_mock.return_value = connection_mock
self.assertFalse(connection_mock.called)
self.assertFalse(connection_mock.request.called)
model.save()
self.assertTrue(connection_mock.called)
self.assertTrue(connection_mock.request.called)
connection_mock.assert_called_once_with()
call_args = connection_mock.request.call_args[0]
call_kwargs = connection_mock.request.call_args[1]
call_kwargs['data']['content'] = json.loads(call_kwargs['data']['content'])
self.assertEqual(('POST', '/v1.1/instances/test/push_notifications/gcm/messages/'), call_args)
self.assertDictEqual(
{'data': {'content': {"environment": "production", "data": "some data"}}},
call_kwargs,
)
@mock.patch('syncano.models.APNSMessage._get_connection')
def test_apns_message(self, connection_mock):
model = APNSMessage(
instance_name='test',
content={'data': 'some data'}
)
connection_mock.return_value = connection_mock
self.assertFalse(connection_mock.called)
self.assertFalse(connection_mock.request.called)
model.save()
self.assertTrue(connection_mock.called)
self.assertTrue(connection_mock.request.called)
connection_mock.assert_called_once_with()
call_args = connection_mock.request.call_args[0]
call_kwargs = connection_mock.request.call_args[1]
call_kwargs['data']['content'] = json.loads(call_kwargs['data']['content'])
self.assertEqual(('POST', '/v1.1/instances/test/push_notifications/apns/messages/'), call_args)
self.assertDictEqual(call_kwargs['data'], {'content': {"environment": "production", "data": "some data"}})