@@ -750,6 +750,44 @@ def test_aps_alert(self):
750750 check_encoding (msg , expected )
751751
752752
753+ class TestTimeout (object ):
754+
755+ @classmethod
756+ def setup_class (cls ):
757+ cred = testutils .MockCredential ()
758+ firebase_admin .initialize_app (cred , {'httpTimeout' : 4 , 'projectId' : 'explicit-project-id' })
759+
760+ @classmethod
761+ def teardown_class (cls ):
762+ testutils .cleanup_apps ()
763+
764+ def setup (self ):
765+ app = firebase_admin .get_app ()
766+ self .fcm_service = messaging ._get_messaging_service (app )
767+ self .recorder = []
768+
769+ def test_send (self ):
770+ self .fcm_service ._client .session .mount (
771+ 'https://fcm.googleapis.com' ,
772+ testutils .MockAdapter (json .dumps ({'name' : 'message-id' }), 200 , self .recorder ))
773+ msg = messaging .Message (topic = 'foo' )
774+ messaging .send (msg )
775+ assert len (self .recorder ) == 1
776+ assert self .recorder [0 ]._extra_kwargs ['timeout' ] == 4
777+
778+ def test_topic_management_timeout (self ):
779+ self .fcm_service ._client .session .mount (
780+ 'https://iid.googleapis.com' ,
781+ testutils .MockAdapter (
782+ json .dumps ({'results' : [{}, {'error' : 'error_reason' }]}),
783+ 200 ,
784+ self .recorder )
785+ )
786+ messaging .subscribe_to_topic (['1' ], 'a' )
787+ assert len (self .recorder ) == 1
788+ assert self .recorder [0 ]._extra_kwargs ['timeout' ] == 4
789+
790+
753791class TestSend (object ):
754792
755793 _DEFAULT_RESPONSE = json .dumps ({'name' : 'message-id' })
@@ -817,6 +855,7 @@ def test_send(self):
817855 assert len (recorder ) == 1
818856 assert recorder [0 ].method == 'POST'
819857 assert recorder [0 ].url == self ._get_url ('explicit-project-id' )
858+ assert recorder [0 ]._extra_kwargs ['timeout' ] is None
820859 body = {'message' : messaging ._MessagingService .encode_message (msg )}
821860 assert json .loads (recorder [0 ].body .decode ()) == body
822861
0 commit comments