Skip to content

Commit 5ef6f6d

Browse files
authored
Added integration tests for the new multicast APIs (#289)
* Added integration tests for the new multicast APIs * Fixing a lint error
1 parent 4488f53 commit 5ef6f6d

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Unreleased
22

3+
- [added] Added new `send_all()` and `send_multicast()` APIs to the
4+
`messasing` module.
35
- [added] Added a new `auth.DELETE_ATTRIBUTE` sentinel value, which can be
46
used to delete `phone_number`, `display_name`, `photo_url` and `custom_claims`
57
attributes from a user account. It is now recommended to use this sentinel

integration/test_messaging.py

+62
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,68 @@ def test_send():
4747
msg_id = messaging.send(msg, dry_run=True)
4848
assert re.match('^projects/.*/messages/.*$', msg_id)
4949

50+
def test_send_all():
51+
messages = [
52+
messaging.Message(
53+
topic='foo-bar', notification=messaging.Notification('Title', 'Body')),
54+
messaging.Message(
55+
topic='foo-bar', notification=messaging.Notification('Title', 'Body')),
56+
messaging.Message(
57+
token='not-a-token', notification=messaging.Notification('Title', 'Body')),
58+
]
59+
60+
batch_response = messaging.send_all(messages, dry_run=True)
61+
62+
assert batch_response.success_count == 2
63+
assert batch_response.failure_count == 1
64+
assert len(batch_response.responses) == 3
65+
66+
response = batch_response.responses[0]
67+
assert response.success is True
68+
assert response.exception is None
69+
assert re.match('^projects/.*/messages/.*$', response.message_id)
70+
71+
response = batch_response.responses[1]
72+
assert response.success is True
73+
assert response.exception is None
74+
assert re.match('^projects/.*/messages/.*$', response.message_id)
75+
76+
response = batch_response.responses[2]
77+
assert response.success is False
78+
assert response.exception is not None
79+
assert response.message_id is None
80+
81+
def test_send_one_hundred():
82+
messages = []
83+
for msg_number in range(100):
84+
topic = 'foo-bar-{0}'.format(msg_number % 10)
85+
messages.append(messaging.Message(topic=topic))
86+
87+
batch_response = messaging.send_all(messages, dry_run=True)
88+
89+
assert batch_response.success_count == 100
90+
assert batch_response.failure_count == 0
91+
assert len(batch_response.responses) == 100
92+
for response in batch_response.responses:
93+
assert response.success is True
94+
assert response.exception is None
95+
assert re.match('^projects/.*/messages/.*$', response.message_id)
96+
97+
def test_send_multicast():
98+
multicast = messaging.MulticastMessage(
99+
notification=messaging.Notification('Title', 'Body'),
100+
tokens=['not-a-token', 'also-not-a-token'])
101+
102+
batch_response = messaging.send_multicast(multicast)
103+
104+
assert batch_response.success_count is 0
105+
assert batch_response.failure_count == 2
106+
assert len(batch_response.responses) == 2
107+
for response in batch_response.responses:
108+
assert response.success is False
109+
assert response.exception is not None
110+
assert response.message_id is None
111+
50112
def test_subscribe():
51113
resp = messaging.subscribe_to_topic(_REGISTRATION_TOKEN, 'mock-topic')
52114
assert resp.success_count + resp.failure_count == 1

0 commit comments

Comments
 (0)