Skip to content

Commit de4ee2d

Browse files
authored
Renamed FcmOptions types to FCMOptions (#328)
1 parent 69c03e3 commit de4ee2d

File tree

3 files changed

+68
-48
lines changed

3 files changed

+68
-48
lines changed

firebase_admin/_messaging_utils.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class Message(object):
3636
android: An instance of ``messaging.AndroidConfig`` (optional).
3737
webpush: An instance of ``messaging.WebpushConfig`` (optional).
3838
apns: An instance of ``messaging.ApnsConfig`` (optional).
39-
fcm_options: An instance of ``messaging.FcmOptions`` (optional).
39+
fcm_options: An instance of ``messaging.FCMOptions`` (optional).
4040
token: The registration token of the device to which the message should be sent (optional).
4141
topic: Name of the FCM topic to which the message should be sent (optional). Topic name
4242
may contain the ``/topics/`` prefix.
@@ -67,7 +67,7 @@ class MulticastMessage(object):
6767
android: An instance of ``messaging.AndroidConfig`` (optional).
6868
webpush: An instance of ``messaging.WebpushConfig`` (optional).
6969
apns: An instance of ``messaging.ApnsConfig`` (optional).
70-
fcm_options: An instance of ``messaging.FcmOptions`` (optional).
70+
fcm_options: An instance of ``messaging.FCMOptions`` (optional).
7171
"""
7272
def __init__(self, tokens, data=None, notification=None, android=None, webpush=None, apns=None,
7373
fcm_options=None):
@@ -112,7 +112,7 @@ class AndroidConfig(object):
112112
data: A dictionary of data fields (optional). All keys and values in the dictionary must be
113113
strings. When specified, overrides any data fields set via ``Message.data``.
114114
notification: A ``messaging.AndroidNotification`` to be included in the message (optional).
115-
fcm_options: A ``messaging.AndroidFcmOptions`` to be included in the message (optional).
115+
fcm_options: A ``messaging.AndroidFCMOptions`` to be included in the message (optional).
116116
"""
117117

118118
def __init__(self, collapse_key=None, priority=None, ttl=None, restricted_package_name=None,
@@ -172,7 +172,7 @@ def __init__(self, title=None, body=None, icon=None, color=None, sound=None, tag
172172
self.channel_id = channel_id
173173

174174

175-
class AndroidFcmOptions(object):
175+
class AndroidFCMOptions(object):
176176
"""Options for features provided by the FCM SDK for Android.
177177
178178
Args:
@@ -193,7 +193,7 @@ class WebpushConfig(object):
193193
data: A dictionary of data fields (optional). All keys and values in the dictionary must be
194194
strings. When specified, overrides any data fields set via ``Message.data``.
195195
notification: A ``messaging.WebpushNotification`` to be included in the message (optional).
196-
fcm_options: A ``messaging.WebpushFcmOptions`` instance to be included in the message
196+
fcm_options: A ``messaging.WebpushFCMOptions`` instance to be included in the message
197197
(optional).
198198
199199
.. _Webpush Specification: https://tools.ietf.org/html/rfc8030#section-5
@@ -278,7 +278,7 @@ def __init__(self, title=None, body=None, icon=None, actions=None, badge=None, d
278278
self.custom_data = custom_data
279279

280280

281-
class WebpushFcmOptions(object):
281+
class WebpushFCMOptions(object):
282282
"""Options for features provided by the FCM SDK for Web.
283283
284284
Args:
@@ -298,7 +298,7 @@ class APNSConfig(object):
298298
Args:
299299
headers: A dictionary of headers (optional).
300300
payload: A ``messaging.APNSPayload`` to be included in the message (optional).
301-
fcm_options: A ``messaging.APNSFcmOptions`` instance to be included in the message
301+
fcm_options: A ``messaging.APNSFCMOptions`` instance to be included in the message
302302
(optional).
303303
304304
.. _APNS Documentation: https://developer.apple.com/library/content/documentation\
@@ -413,7 +413,7 @@ def __init__(self, title=None, subtitle=None, body=None, loc_key=None, loc_args=
413413
self.custom_data = custom_data
414414

415415

416-
class APNSFcmOptions(object):
416+
class APNSFCMOptions(object):
417417
"""Options for features provided by the FCM SDK for iOS.
418418
419419
Args:
@@ -425,7 +425,7 @@ def __init__(self, analytics_label=None):
425425
self.analytics_label = analytics_label
426426

427427

428-
class FcmOptions(object):
428+
class FCMOptions(object):
429429
"""Options for features provided by SDK.
430430
431431
Args:
@@ -535,15 +535,15 @@ def encode_android(cls, android):
535535

536536
@classmethod
537537
def encode_android_fcm_options(cls, fcm_options):
538-
"""Encodes a AndroidFcmOptions instance into a json."""
538+
"""Encodes an AndroidFCMOptions instance into a json."""
539539
if fcm_options is None:
540540
return None
541-
if not isinstance(fcm_options, AndroidFcmOptions):
541+
if not isinstance(fcm_options, AndroidFCMOptions):
542542
raise ValueError('AndroidConfig.fcm_options must be an instance of '
543-
'AndroidFcmOptions class.')
543+
'AndroidFCMOptions class.')
544544
result = {
545545
'analytics_label': _Validators.check_analytics_label(
546-
'AndroidFcmOptions.analytics_label', fcm_options.analytics_label),
546+
'AndroidFCMOptions.analytics_label', fcm_options.analytics_label),
547547
}
548548
result = cls.remove_null_values(result)
549549
return result
@@ -703,7 +703,7 @@ def encode_webpush_notification_actions(cls, actions):
703703

704704
@classmethod
705705
def encode_webpush_fcm_options(cls, options):
706-
"""Encodes a WebpushFcmOptions instance into JSON."""
706+
"""Encodes a WebpushFCMOptions instance into JSON."""
707707
if options is None:
708708
return None
709709
result = {
@@ -712,7 +712,7 @@ def encode_webpush_fcm_options(cls, options):
712712
result = cls.remove_null_values(result)
713713
link = result.get('link')
714714
if link is not None and not link.startswith('https://'):
715-
raise ValueError('WebpushFcmOptions.link must be a HTTPS URL.')
715+
raise ValueError('WebpushFCMOptions.link must be a HTTPS URL.')
716716
return result
717717

718718
@classmethod
@@ -746,14 +746,14 @@ def encode_apns_payload(cls, payload):
746746

747747
@classmethod
748748
def encode_apns_fcm_options(cls, fcm_options):
749-
"""Encodes an APNSFcmOptions instance into JSON."""
749+
"""Encodes an APNSFCMOptions instance into JSON."""
750750
if fcm_options is None:
751751
return None
752-
if not isinstance(fcm_options, APNSFcmOptions):
753-
raise ValueError('APNSConfig.fcm_options must be an instance of APNSFcmOptions class.')
752+
if not isinstance(fcm_options, APNSFCMOptions):
753+
raise ValueError('APNSConfig.fcm_options must be an instance of APNSFCMOptions class.')
754754
result = {
755755
'analytics_label': _Validators.check_analytics_label(
756-
'APNSFcmOptions.analytics_label', fcm_options.analytics_label),
756+
'APNSFCMOptions.analytics_label', fcm_options.analytics_label),
757757
}
758758
result = cls.remove_null_values(result)
759759
return result
@@ -897,14 +897,14 @@ def default(self, obj): # pylint: disable=method-hidden
897897

898898
@classmethod
899899
def encode_fcm_options(cls, fcm_options):
900-
"""Encodes an FcmOptions instance into JSON."""
900+
"""Encodes an FCMOptions instance into JSON."""
901901
if fcm_options is None:
902902
return None
903-
if not isinstance(fcm_options, FcmOptions):
904-
raise ValueError('Message.fcm_options must be an instance of FcmOptions class.')
903+
if not isinstance(fcm_options, FCMOptions):
904+
raise ValueError('Message.fcm_options must be an instance of FCMOptions class.')
905905
result = {
906906
'analytics_label': _Validators.check_analytics_label(
907-
'FcmOptions.analytics_label', fcm_options.analytics_label),
907+
'FCMOptions.analytics_label', fcm_options.analytics_label),
908908
}
909909
result = cls.remove_null_values(result)
910910
return result

firebase_admin/messaging.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,25 @@
3333

3434
__all__ = [
3535
'AndroidConfig',
36-
'AndroidFcmOptions',
36+
'AndroidFCMOptions',
3737
'AndroidNotification',
3838
'APNSConfig',
39-
'APNSFcmOptions',
39+
'APNSFCMOptions',
4040
'APNSPayload',
4141
'ApiCallError',
4242
'Aps',
4343
'ApsAlert',
4444
'BatchResponse',
4545
'CriticalSound',
4646
'ErrorInfo',
47-
'FcmOptions',
47+
'FCMOptions',
4848
'Message',
4949
'MulticastMessage',
5050
'Notification',
5151
'SendResponse',
5252
'TopicManagementResponse',
5353
'WebpushConfig',
54-
'WebpushFcmOptions',
54+
'WebpushFCMOptions',
5555
'WebpushNotification',
5656
'WebpushNotificationAction',
5757

@@ -64,20 +64,21 @@
6464

6565

6666
AndroidConfig = _messaging_utils.AndroidConfig
67-
AndroidFcmOptions = _messaging_utils.AndroidFcmOptions
67+
AndroidFCMOptions = _messaging_utils.AndroidFCMOptions
6868
AndroidNotification = _messaging_utils.AndroidNotification
6969
APNSConfig = _messaging_utils.APNSConfig
70-
APNSFcmOptions = _messaging_utils.APNSFcmOptions
70+
APNSFCMOptions = _messaging_utils.APNSFCMOptions
7171
APNSPayload = _messaging_utils.APNSPayload
7272
Aps = _messaging_utils.Aps
7373
ApsAlert = _messaging_utils.ApsAlert
7474
CriticalSound = _messaging_utils.CriticalSound
75-
FcmOptions = _messaging_utils.FcmOptions
75+
FCMOptions = _messaging_utils.FCMOptions
7676
Message = _messaging_utils.Message
7777
MulticastMessage = _messaging_utils.MulticastMessage
7878
Notification = _messaging_utils.Notification
7979
WebpushConfig = _messaging_utils.WebpushConfig
80-
WebpushFcmOptions = _messaging_utils.WebpushFcmOptions
80+
WebpushFCMOptions = _messaging_utils.WebpushFCMOptions
81+
WebpushFcmOptions = _messaging_utils.WebpushFCMOptions
8182
WebpushNotification = _messaging_utils.WebpushNotification
8283
WebpushNotificationAction = _messaging_utils.WebpushNotificationAction
8384

tests/test_messaging.py

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@ def test_prefixed_topic(self):
123123
def test_fcm_options(self):
124124
check_encoding(
125125
messaging.Message(
126-
topic='topic', fcm_options=messaging.FcmOptions('analytics_label_v1')),
126+
topic='topic', fcm_options=messaging.FCMOptions('analytics_label_v1')),
127127
{'topic': 'topic', 'fcm_options': {'analytics_label': 'analytics_label_v1'}})
128128
check_encoding(
129-
messaging.Message(topic='topic', fcm_options=messaging.FcmOptions()),
129+
messaging.Message(topic='topic', fcm_options=messaging.FCMOptions()),
130130
{'topic': 'topic'})
131131

132132

@@ -177,27 +177,27 @@ def test_invalid_fcm_options(self, label):
177177
with pytest.raises(ValueError) as excinfo:
178178
check_encoding(messaging.Message(
179179
topic='topic',
180-
fcm_options=messaging.FcmOptions(label)
180+
fcm_options=messaging.FCMOptions(label)
181181
))
182-
expected = 'Malformed FcmOptions.analytics_label.'
182+
expected = 'Malformed FCMOptions.analytics_label.'
183183
assert str(excinfo.value) == expected
184184

185185
def test_fcm_options(self):
186186
check_encoding(
187187
messaging.Message(
188188
topic='topic',
189-
fcm_options=messaging.FcmOptions(),
190-
android=messaging.AndroidConfig(fcm_options=messaging.AndroidFcmOptions()),
191-
apns=messaging.APNSConfig(fcm_options=messaging.APNSFcmOptions())
189+
fcm_options=messaging.FCMOptions(),
190+
android=messaging.AndroidConfig(fcm_options=messaging.AndroidFCMOptions()),
191+
apns=messaging.APNSConfig(fcm_options=messaging.APNSFCMOptions())
192192
),
193193
{'topic': 'topic'})
194194
check_encoding(
195195
messaging.Message(
196196
topic='topic',
197-
fcm_options=messaging.FcmOptions('message-label'),
197+
fcm_options=messaging.FCMOptions('message-label'),
198198
android=messaging.AndroidConfig(
199-
fcm_options=messaging.AndroidFcmOptions('android-label')),
200-
apns=messaging.APNSConfig(fcm_options=messaging.APNSFcmOptions('apns-label'))
199+
fcm_options=messaging.AndroidFCMOptions('android-label')),
200+
apns=messaging.APNSConfig(fcm_options=messaging.APNSFCMOptions('apns-label'))
201201
),
202202
{
203203
'topic': 'topic',
@@ -267,7 +267,7 @@ def test_android_config(self):
267267
priority='high',
268268
ttl=123,
269269
data={'k1': 'v1', 'k2': 'v2'},
270-
fcm_options=messaging.AndroidFcmOptions('analytics_label_v1')
270+
fcm_options=messaging.AndroidFCMOptions('analytics_label_v1')
271271
)
272272
)
273273
expected = {
@@ -500,7 +500,7 @@ def test_webpush_config(self):
500500
check_encoding(msg, expected)
501501

502502

503-
class TestWebpushFcmOptionsEncoder(object):
503+
class TestWebpushFCMOptionsEncoder(object):
504504

505505
@pytest.mark.parametrize('data', NON_OBJECT_ARGS)
506506
def test_invalid_webpush_fcm_options(self, data):
@@ -510,7 +510,7 @@ def test_invalid_webpush_fcm_options(self, data):
510510

511511
@pytest.mark.parametrize('data', NON_STRING_ARGS)
512512
def test_invalid_link_type(self, data):
513-
options = messaging.WebpushFcmOptions(link=data)
513+
options = messaging.WebpushFCMOptions(link=data)
514514
with pytest.raises(ValueError) as excinfo:
515515
check_encoding(messaging.Message(
516516
topic='topic', webpush=messaging.WebpushConfig(fcm_options=options)))
@@ -519,14 +519,33 @@ def test_invalid_link_type(self, data):
519519

520520
@pytest.mark.parametrize('data', ['', 'foo', 'http://example'])
521521
def test_invalid_link_format(self, data):
522-
options = messaging.WebpushFcmOptions(link=data)
522+
options = messaging.WebpushFCMOptions(link=data)
523523
with pytest.raises(ValueError) as excinfo:
524524
check_encoding(messaging.Message(
525525
topic='topic', webpush=messaging.WebpushConfig(fcm_options=options)))
526-
expected = 'WebpushFcmOptions.link must be a HTTPS URL.'
526+
expected = 'WebpushFCMOptions.link must be a HTTPS URL.'
527527
assert str(excinfo.value) == expected
528528

529-
def test_webpush_notification(self):
529+
def test_webpush_options(self):
530+
msg = messaging.Message(
531+
topic='topic',
532+
webpush=messaging.WebpushConfig(
533+
fcm_options=messaging.WebpushFCMOptions(
534+
link='https://example',
535+
),
536+
)
537+
)
538+
expected = {
539+
'topic': 'topic',
540+
'webpush': {
541+
'fcm_options': {
542+
'link': 'https://example',
543+
},
544+
},
545+
}
546+
check_encoding(msg, expected)
547+
548+
def test_deprecated_fcm_options(self):
530549
msg = messaging.Message(
531550
topic='topic',
532551
webpush=messaging.WebpushConfig(
@@ -770,7 +789,7 @@ def test_apns_config(self):
770789
topic='topic',
771790
apns=messaging.APNSConfig(
772791
headers={'h1': 'v1', 'h2': 'v2'},
773-
fcm_options=messaging.APNSFcmOptions('analytics_label_v1')
792+
fcm_options=messaging.APNSFCMOptions('analytics_label_v1')
774793
),
775794
)
776795
expected = {

0 commit comments

Comments
 (0)