package com.urbanairship.api.push; import com.google.common.net.HttpHeaders; import com.urbanairship.api.client.Request; import com.urbanairship.api.client.ResponseParser; import com.urbanairship.api.push.model.DeviceType; import com.urbanairship.api.push.model.DeviceTypeData; import com.urbanairship.api.push.model.PushPayload; import com.urbanairship.api.push.model.PushResponse; import com.urbanairship.api.push.model.audience.Selectors; import com.urbanairship.api.push.model.notification.Notifications; import com.urbanairship.api.push.parse.PushObjectMapper; import org.apache.http.entity.ContentType; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.util.HashMap; import java.util.Map; import static org.junit.Assert.assertEquals; public class PushRequestTest { PushPayload payload = PushPayload.newBuilder() .setAudience(Selectors.all()) .setDeviceTypes(DeviceTypeData.of(DeviceType.IOS)) .setNotification(Notifications.alert("Foo")) .build(); PushPayload payload2 = PushPayload.newBuilder() .setAudience(Selectors.all()) .setDeviceTypes(DeviceTypeData.of(DeviceType.IOS)) .setNotification(Notifications.alert("Bar")) .build(); PushRequest pushRequest = PushRequest.newRequest(payload).addPayload(payload2); PushRequest validateRequest = PushRequest.newRequest(payload).addPayload(payload2).setValidateOnly(true); @Test public void testContentType() throws Exception { assertEquals(pushRequest.getContentType(), ContentType.APPLICATION_JSON); assertEquals(validateRequest.getContentType(), ContentType.APPLICATION_JSON); } @Test public void testMethod() throws Exception { assertEquals(pushRequest.getHttpMethod(), Request.HttpMethod.POST); assertEquals(validateRequest.getHttpMethod(), Request.HttpMethod.POST); } @Test public void testBody() throws Exception { assertEquals(pushRequest.getRequestBody(), "[{\"audience\":\"ALL\",\"device_types\":[\"ios\"],\"notification\":{\"alert\":\"Foo\"}},{\"audience\":\"ALL\",\"device_types\":[\"ios\"],\"notification\":{\"alert\":\"Bar\"}}]"); assertEquals(validateRequest.getRequestBody(), "[{\"audience\":\"ALL\",\"device_types\":[\"ios\"],\"notification\":{\"alert\":\"Foo\"}},{\"audience\":\"ALL\",\"device_types\":[\"ios\"],\"notification\":{\"alert\":\"Bar\"}}]"); } @Test public void testHeaders() throws Exception { Map<String, String> headers = new HashMap<String, String>(); headers.put(HttpHeaders.CONTENT_TYPE, Request.CONTENT_TYPE_JSON); headers.put(HttpHeaders.ACCEPT, Request.UA_VERSION_JSON); assertEquals(pushRequest.getRequestHeaders(), headers); assertEquals(validateRequest.getRequestHeaders(), headers); } @Test public void testURI() throws Exception { URI baseURI = URI.create("https://go.urbanairship.com"); URI expectedURI = URI.create("https://go.urbanairship.com/api/push/"); assertEquals(pushRequest.getUri(baseURI), expectedURI); expectedURI = URI.create("https://go.urbanairship.com/api/push/validate/"); assertEquals(validateRequest.getUri(baseURI), expectedURI); } @Test public void testPushParser() throws Exception { ResponseParser responseParser = new ResponseParser<PushResponse>() { @Override public PushResponse parse(String response) throws IOException { return PushObjectMapper.getInstance().readValue(response, PushResponse.class); } }; String response = "{\"ok\" : true,\"operation_id\" : \"df6a6b50\", \"push_ids\":[\"PushID\"]}"; assertEquals(pushRequest.getResponseParser().parse(response), responseParser.parse(response)); } @Test public void testPushValidationParser() throws Exception { ResponseParser responseParser = new ResponseParser<PushResponse>() { @Override public PushResponse parse(String response) throws IOException { return PushObjectMapper.getInstance().readValue(response, PushResponse.class); } }; String response = "{\"ok\" : true}"; assertEquals(validateRequest.getResponseParser().parse(response), responseParser.parse(response)); } }