Skip to content

Commit 668b29f

Browse files
committed
Removing some duplicate code in messaging tests
1 parent 011e6e8 commit 668b29f

File tree

3 files changed

+56
-71
lines changed

3 files changed

+56
-71
lines changed

src/main/java/com/google/firebase/messaging/FirebaseMessaging.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ private static class FirebaseMessagingService extends FirebaseService<FirebaseMe
364364

365365
@Override
366366
public void destroy() {
367-
// NOTE: We don't explicitly tear down anything here, but public methods of StorageClient
367+
// NOTE: We don't explicitly tear down anything here, but public methods of FirebaseMessaging
368368
// will now fail because calls to getOptions() and getToken() will hit FirebaseApp,
369369
// which will throw once the app is deleted.
370370
}

src/main/java/com/google/firebase/messaging/Message.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
/**
3030
* Represents a message that can be sent via Firebase Cloud Messaging (FCM). Contains payload
3131
* information as well as the recipient information. In particular, the message must contain
32-
* exactly one of token, topic or condition parameters. Instances of this class are thread-safe
32+
* exactly one token, topic or condition parameter. Instances of this class are thread-safe
3333
* and immutable. Use {@link Message.Builder} to create new instances.
3434
*
3535
* @see

src/test/java/com/google/firebase/messaging/FirebaseMessagingTest.java

Lines changed: 54 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)