package com.urbanairship.api.reports; import com.urbanairship.api.client.Request; import com.urbanairship.api.client.ResponseParser; import com.urbanairship.api.reports.model.StatisticsResponse; import com.urbanairship.api.reports.parse.ReportsObjectMapper; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.Period; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.util.List; import static org.junit.Assert.assertEquals; public class StatisticsRequestTest { ObjectMapper mapper = ReportsObjectMapper.getInstance(); DateTime start = new DateTime(2014, 10, 1, 12, 0, 0, 0, DateTimeZone.UTC); DateTime end = start.plus(Period.hours(48)); String queryPathString = "/api/push/stats/?start=2014-10-01T12%3A00%3A00&end=2014-10-03T12%3A00%3A00"; StatisticsRequest request = StatisticsRequest.newRequest(start, end); @Test public void testContentType() throws Exception { assertEquals(request.getContentType(), null); } @Test public void testMethod() throws Exception { assertEquals(request.getHttpMethod(), Request.HttpMethod.GET); } @Test public void testBody() throws Exception { assertEquals(request.getRequestBody(), null); } @Test public void testHeaders() throws Exception { assertEquals(request.getRequestHeaders(), null); } @Test public void testURI() throws Exception { URI baseURI = URI.create("https://go.urbanairship.com"); URI expectedURI = URI.create("https://go.urbanairship.com" + queryPathString); assertEquals(request.getUri(baseURI), expectedURI); } @Test public void testStatisticsParser() throws Exception { ResponseParser responseParser = new ResponseParser<List<StatisticsResponse>>() { @Override public List<StatisticsResponse> parse(String response) throws IOException { return mapper.readValue(response, new TypeReference<List<StatisticsResponse>>() {}); } }; String response = "[\n" + " {\n" + " \"c2dm_messages\": 0,\n" + " \"gcm_messages\": 3,\n" + " \"messages\": 2,\n" + " \"wns_messages\": 0,\n" + " \"start\": \"2014-06-22 00:00:00\",\n" + " \"mpns_messages\": 0,\n" + " \"bb_messages\": 0\n" + " },\n" + " {\n" + " \"c2dm_messages\": 0,\n" + " \"gcm_messages\": 2,\n" + " \"messages\": 0,\n" + " \"wns_messages\": 0,\n" + " \"start\": \"2014-06-22 01:00:00\",\n" + " \"mpns_messages\": 0,\n" + " \"bb_messages\": 0\n" + " },\n" + " {\n" + " \"messages\": 0,\n" + " \"mpns_messages\": 0,\n" + " \"gcm_messages\": 0,\n" + " \"c2dm_messages\": 0,\n" + " \"wns_messages\": 0,\n" + " \"start\": \"2014-06-22 02:00:00\",\n" + " \"bb_messages\": 0\n" + " },\n" + " {\n" + " \"c2dm_messages\": 0,\n" + " \"gcm_messages\": 1,\n" + " \"messages\": 3,\n" + " \"wns_messages\": 0,\n" + " \"start\": \"2014-06-22 03:00:00\",\n" + " \"mpns_messages\": 0,\n" + " \"bb_messages\": 0\n" + " }\n" + "]"; List<StatisticsResponse> expectedResponse = (List<StatisticsResponse>) responseParser.parse(response); assertEquals(request.getResponseParser().parse(response), expectedResponse); } }