Skip to content

Commit f8c192a

Browse files
committed
fix NotificationResult import, add test for err_func param
1 parent 7500caa commit f8c192a

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

push_notifications/apns_async.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import asyncio
2-
from dataclasses import asdict, dataclass
32
import time
3+
from dataclasses import asdict, dataclass
44
from typing import Awaitable, Callable, Dict, Optional, Union
55

6-
from aioapns import APNs, NotificationRequest, ConnectionError, NotificationResult
6+
from aioapns import APNs, ConnectionError, NotificationRequest
7+
from aioapns.common import NotificationResult
78

89
from . import models
910
from .conf import get_manager
@@ -134,9 +135,12 @@ def send_message(
134135
self,
135136
request: NotificationRequest,
136137
):
138+
print("a")
137139
loop = asyncio.get_event_loop()
138140
res1 = self.client.send_notification(request)
141+
print("b", res1)
139142
res = loop.run_until_complete(res1)
143+
print("c", res)
140144
return res
141145

142146
def _create_notification_request_from_args(

tests/test_apns_async_push_payload.py

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import pytest
66
from django.test import TestCase
77

8+
from aioapns.common import NotificationResult
89

910
try:
1011
from push_notifications.apns_async import TokenCredentials, apns_send_message
@@ -53,11 +54,7 @@ def test_push_payload_with_thread_id(self, mock_apns):
5354
sound="chime",
5455
extra={"custom_data": 12345},
5556
expiration=int(time.time()) + 3,
56-
creds=TokenCredentials(
57-
key="aaa",
58-
key_id="bbb",
59-
team_id="ccc",
60-
),
57+
creds=TokenCredentials(key="aaa", key_id="bbb", team_id="ccc"),
6158
)
6259
args, kwargs = mock_apns.return_value.send_notification.call_args
6360
req = args[0]
@@ -159,6 +156,34 @@ def test_collapse_id(self, mock_apns):
159156
self.assertEqual(req.message["aps"]["alert"], "sample")
160157
self.assertEqual(req.collapse_key, "456789")
161158

159+
@mock.patch("aioapns.client.APNsCertConnectionPool", autospec=True)
160+
@mock.patch("aioapns.client.APNsKeyConnectionPool", autospec=True)
161+
def test_aioapns_err_func(self, mock_cert_pool, mock_key_pool):
162+
mock_cert_pool.return_value.send_notification = mock.AsyncMock()
163+
result = NotificationResult(
164+
"123", "400"
165+
)
166+
mock_cert_pool.return_value.send_notification.return_value = result
167+
err_func = mock.AsyncMock()
168+
with pytest.raises(Exception):
169+
apns_send_message(
170+
"123",
171+
"sample",
172+
creds=TokenCredentials(
173+
key="aaa",
174+
key_id="bbb",
175+
team_id="ccc",
176+
),
177+
topic="default",
178+
err_func=err_func,
179+
)
180+
mock_cert_pool.assert_called_once()
181+
mock_cert_pool.return_value.send_notification.assert_called_once()
182+
mock_cert_pool.return_value.send_notification.assert_awaited_once()
183+
err_func.assert_called_with(
184+
mock.ANY, result
185+
)
186+
162187
# def test_bad_priority(self):
163188
# with mock.patch("apns2.credentials.init_context"):
164189
# with mock.patch("apns2.client.APNsClient.connect"):

0 commit comments

Comments
 (0)