@@ -56,6 +56,7 @@ public class FirebaseMessagingTest {
5656 private static final String TEST_IID_UNSUBSCRIBE_URL =
5757 "https://iid.googleapis.com/iid/v1:batchRemove" ;
5858 private static final List <Integer > HTTP_ERRORS = ImmutableList .of (401 , 404 , 500 );
59+ private static final String MOCK_RESPONSE = "{\" name\" : \" mock-name\" }" ;
5960
6061 private static final ImmutableList .Builder <String > tooManyIds = ImmutableList .builder ();
6162
@@ -97,13 +98,7 @@ public void testNoProjectId() {
9798
9899 @ Test
99100 public void testNullMessage () throws Exception {
100- FirebaseOptions options = new FirebaseOptions .Builder ()
101- .setCredentials (new MockGoogleCredentials ("test-token" ))
102- .setProjectId ("test-project" )
103- .build ();
104- FirebaseApp .initializeApp (options );
105-
106- FirebaseMessaging messaging = FirebaseMessaging .getInstance ();
101+ FirebaseMessaging messaging = initDefaultMessaging ();
107102 TestResponseInterceptor interceptor = new TestResponseInterceptor ();
108103 messaging .setInterceptor (interceptor );
109104 try {
@@ -119,12 +114,12 @@ public void testNullMessage() throws Exception {
119114 @ Test
120115 public void testSend () throws Exception {
121116 MockLowLevelHttpResponse response = new MockLowLevelHttpResponse ()
122- .setContent ("{ \" name \" : \" mock-name \" }" );
117+ .setContent (MOCK_RESPONSE );
123118 FirebaseMessaging messaging = initMessaging (response );
124119 Map <Message , Map <String , Object >> testMessages = buildTestMessages ();
125120
126121 for (Map .Entry <Message , Map <String , Object >> entry : testMessages .entrySet ()) {
127- response .setContent ("{ \" name \" : \" mock-name \" }" );
122+ response .setContent (MOCK_RESPONSE );
128123 TestResponseInterceptor interceptor = new TestResponseInterceptor ();
129124 messaging .setInterceptor (interceptor );
130125 String resp = messaging .sendAsync (entry .getKey ()).get ();
@@ -143,12 +138,12 @@ public void testSend() throws Exception {
143138 @ Test
144139 public void testSendDryRun () throws Exception {
145140 MockLowLevelHttpResponse response = new MockLowLevelHttpResponse ()
146- .setContent ("{ \" name \" : \" mock-name \" }" );
141+ .setContent (MOCK_RESPONSE );
147142 FirebaseMessaging messaging = initMessaging (response );
148143 Map <Message , Map <String , Object >> testMessages = buildTestMessages ();
149144
150145 for (Map .Entry <Message , Map <String , Object >> entry : testMessages .entrySet ()) {
151- response .setContent ("{ \" name \" : \" mock-name \" }" );
146+ response .setContent (MOCK_RESPONSE );
152147 TestResponseInterceptor interceptor = new TestResponseInterceptor ();
153148 messaging .setInterceptor (interceptor );
154149 String resp = messaging .sendAsync (entry .getKey (), true ).get ();
@@ -193,12 +188,7 @@ public void testSendError() throws Exception {
193188 error .getMessage ());
194189 assertTrue (error .getCause () instanceof HttpResponseException );
195190 }
196-
197- assertNotNull (interceptor .getResponse ());
198- HttpRequest request = interceptor .getResponse ().getRequest ();
199- assertEquals ("POST" , request .getRequestMethod ());
200- assertEquals (TEST_FCM_URL , request .getUrl ().toString ());
201- assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
191+ checkMessagingRequest (interceptor );
202192 }
203193 }
204194
@@ -221,23 +211,13 @@ public void testSendErrorWithDetails() throws Exception {
221211 assertEquals ("test error" , error .getMessage ());
222212 assertTrue (error .getCause () instanceof HttpResponseException );
223213 }
224-
225- assertNotNull (interceptor .getResponse ());
226- HttpRequest request = interceptor .getResponse ().getRequest ();
227- assertEquals ("POST" , request .getRequestMethod ());
228- assertEquals (TEST_FCM_URL , request .getUrl ().toString ());
229- assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
214+ checkMessagingRequest (interceptor );
230215 }
231216 }
232217
233218 @ Test
234219 public void testInvalidSubscribe () {
235- FirebaseOptions options = new FirebaseOptions .Builder ()
236- .setCredentials (new MockGoogleCredentials ("test-token" ))
237- .setProjectId ("test-project" )
238- .build ();
239- FirebaseApp .initializeApp (options );
240- FirebaseMessaging messaging = FirebaseMessaging .getInstance ();
220+ FirebaseMessaging messaging = initDefaultMessaging ();
241221 TestResponseInterceptor interceptor = new TestResponseInterceptor ();
242222 messaging .setInterceptor (interceptor );
243223
@@ -263,23 +243,7 @@ public void testSubscribe() throws Exception {
263243
264244 TopicManagementResponse result = messaging .subscribeToTopicAsync (
265245 ImmutableList .of ("id1" , "id2" ), "test-topic" ).get ();
266- assertEquals (1 , result .getSuccessCount ());
267- assertEquals (1 , result .getFailureCount ());
268- assertEquals (1 , result .getErrors ().size ());
269- assertEquals (1 , result .getErrors ().get (0 ).getIndex ());
270- assertEquals ("unknown-error" , result .getErrors ().get (0 ).getReason ());
271-
272- assertNotNull (interceptor .getResponse ());
273- HttpRequest request = interceptor .getResponse ().getRequest ();
274- assertEquals ("POST" , request .getRequestMethod ());
275- assertEquals (TEST_IID_SUBSCRIBE_URL , request .getUrl ().toString ());
276- assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
277- assertEquals ("true" , request .getHeaders ().get ("access_token_auth" ));
278-
279- ByteArrayOutputStream out = new ByteArrayOutputStream ();
280- request .getContent ().writeTo (out );
281- assertEquals ("{\" to\" :\" /topics/test-topic\" ,\" registration_tokens\" :[\" id1\" ,\" id2\" ]}" ,
282- out .toString ());
246+ checkTopicManagementCall (TEST_IID_SUBSCRIBE_URL , result , interceptor );
283247 }
284248
285249 @ Test
@@ -311,12 +275,7 @@ public void testSubscribeError() throws Exception {
311275
312276 @ Test
313277 public void testInvalidUnsubscribe () {
314- FirebaseOptions options = new FirebaseOptions .Builder ()
315- .setCredentials (new MockGoogleCredentials ("test-token" ))
316- .setProjectId ("test-project" )
317- .build ();
318- FirebaseApp .initializeApp (options );
319- FirebaseMessaging messaging = FirebaseMessaging .getInstance ();
278+ FirebaseMessaging messaging = initDefaultMessaging ();
320279 TestResponseInterceptor interceptor = new TestResponseInterceptor ();
321280 messaging .setInterceptor (interceptor );
322281
@@ -342,23 +301,7 @@ public void testUnsubscribe() throws Exception {
342301
343302 TopicManagementResponse result = messaging .unsubscribeFromTopicAsync (
344303 ImmutableList .of ("id1" , "id2" ), "test-topic" ).get ();
345- assertEquals (1 , result .getSuccessCount ());
346- assertEquals (1 , result .getFailureCount ());
347- assertEquals (1 , result .getErrors ().size ());
348- assertEquals (1 , result .getErrors ().get (0 ).getIndex ());
349- assertEquals ("unknown-error" , result .getErrors ().get (0 ).getReason ());
350-
351- assertNotNull (interceptor .getResponse ());
352- HttpRequest request = interceptor .getResponse ().getRequest ();
353- assertEquals ("POST" , request .getRequestMethod ());
354- assertEquals (TEST_IID_UNSUBSCRIBE_URL , request .getUrl ().toString ());
355- assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
356- assertEquals ("true" , request .getHeaders ().get ("access_token_auth" ));
357-
358- ByteArrayOutputStream out = new ByteArrayOutputStream ();
359- request .getContent ().writeTo (out );
360- assertEquals ("{\" to\" :\" /topics/test-topic\" ,\" registration_tokens\" :[\" id1\" ,\" id2\" ]}" ,
361- out .toString ());
304+ checkTopicManagementCall (TEST_IID_UNSUBSCRIBE_URL , result , interceptor );
362305 }
363306
364307 @ Test
@@ -412,6 +355,48 @@ private static FirebaseMessaging initMessaging(MockLowLevelHttpResponse mockResp
412355 return messaging ;
413356 }
414357
358+ private static FirebaseMessaging initDefaultMessaging () {
359+ FirebaseOptions options = new FirebaseOptions .Builder ()
360+ .setCredentials (new MockGoogleCredentials ("test-token" ))
361+ .setProjectId ("test-project" )
362+ .build ();
363+ FirebaseApp app = FirebaseApp .initializeApp (options );
364+ return FirebaseMessaging .getInstance (app );
365+ }
366+
367+ private static void checkMessagingRequest (TestResponseInterceptor interceptor ) {
368+ assertNotNull (interceptor .getResponse ());
369+ HttpRequest request = interceptor .getResponse ().getRequest ();
370+ assertEquals ("POST" , request .getRequestMethod ());
371+ assertEquals (TEST_FCM_URL , request .getUrl ().toString ());
372+ assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
373+ }
374+
375+ private static void checkTopicManagementCall (String url ,
376+ TopicManagementResponse result , TestResponseInterceptor interceptor ) throws IOException {
377+ assertEquals (1 , result .getSuccessCount ());
378+ assertEquals (1 , result .getFailureCount ());
379+ assertEquals (1 , result .getErrors ().size ());
380+ assertEquals (1 , result .getErrors ().get (0 ).getIndex ());
381+ assertEquals ("unknown-error" , result .getErrors ().get (0 ).getReason ());
382+
383+ assertNotNull (interceptor .getResponse ());
384+ HttpRequest request = interceptor .getResponse ().getRequest ();
385+ assertEquals ("POST" , request .getRequestMethod ());
386+ assertEquals (url , request .getUrl ().toString ());
387+ assertEquals ("Bearer test-token" , request .getHeaders ().getAuthorization ());
388+ assertEquals ("true" , request .getHeaders ().get ("access_token_auth" ));
389+
390+ ByteArrayOutputStream out = new ByteArrayOutputStream ();
391+ request .getContent ().writeTo (out );
392+ Map <String , Object > parsed = new HashMap <>();
393+ JsonParser parser = Utils .getDefaultJsonFactory ().createJsonParser (out .toString ());
394+ parser .parseAndClose (parsed );
395+ assertEquals (2 , parsed .size ());
396+ assertEquals ("/topics/test-topic" , parsed .get ("to" ));
397+ assertEquals (ImmutableList .of ("id1" , "id2" ), parsed .get ("registration_tokens" ));
398+ }
399+
415400 private static class TopicMgtArgs {
416401 private final List <String > registrationTokens ;
417402 private final String topic ;
0 commit comments