package com.urbanairship.api.templates; import com.urbanairship.api.client.Request; import com.urbanairship.api.client.ResponseParser; import com.urbanairship.api.templates.model.TemplateListingResponse; import com.urbanairship.api.templates.parse.TemplatesObjectMapper; import org.apache.http.HttpHeaders; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; import java.util.HashMap; import java.util.Map; import static junit.framework.Assert.assertEquals; public class TemplateListingRequestTest { private final static ObjectMapper mapper = TemplatesObjectMapper.getInstance(); private final static String templateName = "template123"; private final static String LISTING_PATH = "/api/templates/"; private final static String LOOKUP_PATH = LISTING_PATH + templateName; TemplateListingRequest lookupRequest; TemplateListingRequest listingRequest; @Before public void setup() { lookupRequest = TemplateListingRequest.newRequest(templateName); listingRequest = TemplateListingRequest.newRequest(); } @Test public void testContentType() throws Exception { assertEquals(lookupRequest.getContentType(), null); assertEquals(listingRequest.getContentType(), null); } @Test public void testMethod() throws Exception { assertEquals(lookupRequest.getHttpMethod(), Request.HttpMethod.GET); assertEquals(listingRequest.getHttpMethod(), Request.HttpMethod.GET); } @Test public void testBody() throws Exception { assertEquals(lookupRequest.getRequestBody(), null); assertEquals(listingRequest.getRequestBody(), null); } @Test public void testHeaders() throws Exception { Map<String, String> headers = new HashMap<String, String>(); headers.put(HttpHeaders.ACCEPT, Request.UA_VERSION_JSON); assertEquals(lookupRequest.getRequestHeaders(), headers); assertEquals(listingRequest.getRequestHeaders(), headers); } @Test public void testURI() throws Exception { URI baseURI = URI.create("https://go.urbanairship.com"); URI expectedUri = URI.create("https://go.urbanairship.com" + LISTING_PATH); Assert.assertEquals(listingRequest.getUri(baseURI), expectedUri); expectedUri = URI.create("https://go.urbanairship.com" + LOOKUP_PATH); assertEquals(lookupRequest.getUri(baseURI), expectedUri); } @Test public void testResponseParser() throws Exception { String lookupJson = "{"+ "\"ok\" : true,"+ "\"template\": {"+ "\"id\" : \"ef34a8d9-0ad7-491c-86b0-aea74da15161\","+ "\"created_at\" : \"2015-08-17T11:10:02Z\","+ "\"modified_at\" : \"2015-08-17T11:10:02Z\","+ "\"last_used\" : \"2015-08-17T11:10:01Z\","+ "\"name\" : \"Welcome Message\","+ "\"description\": \"Our welcome message\","+ "\"variables\": ["+ "{"+ "\"key\": \"TITLE\","+ "\"name\": \"Title\","+ "\"description\": \"e.g. Mr, Ms, Dr, etc.\","+ "\"default_value\": \"\""+ "},"+ "{"+ "\"key\": \"FIRST_NAME\","+ "\"name\": \"First Name\","+ "\"description\": \"Given name\","+ "\"default_value\": null"+ "},"+ "{"+ "\"key\": \"LAST_NAME\","+ "\"name\": \"Last Name\","+ "\"description\": \"Family name\","+ "\"default_value\": null"+ "}"+ "],"+ "\"push\": {"+ "\"notification\": {"+ "\"alert\": \"Hello {{FIRST_NAME}}, this is your welcome message!\""+ "}"+ "}"+ "}"+ "}"; String listingJson = "{"+ "\"ok\" : true,"+ "\"count\": 1,"+ "\"total_count\": 2,"+ "\"templates\": ["+ "{"+ "\"id\" : \"ef34a8d9-0ad7-491c-86b0-aea74da15161\","+ "\"created_at\" : \"2015-08-17T11:10:01Z\","+ "\"modified_at\" : \"2015-08-17T11:10:01Z\","+ "\"last_used\" : \"2015-08-17T11:10:01Z\","+ "\"name\" : \"Welcome Message\","+ "\"description\": \"Our welcome message\","+ "\"variables\": ["+ "{"+ "\"key\": \"TITLE\","+ "\"name\": \"Title\","+ "\"description\": \"e.g. Mr, Ms, Dr, etc.\","+ "\"default_value\": \"\""+ "},"+ "{"+ "\"key\": \"FIRST_NAME\","+ "\"name\": \"First Name\","+ "\"description\": \"Given name\","+ "\"default_value\": \"test\""+ "},"+ "{"+ "\"key\": \"LAST_NAME\","+ "\"name\": \"Last Name\","+ "\"description\": \"Family name\","+ "\"default_value\": \"blah\""+ "}"+ "],"+ "\"push\": {"+ "\"notification\": {"+ "\"alert\": \"Hello {{FIRST_NAME}}, this is your welcome message!\""+ "}"+ "}"+ "}"+ "],"+ "\"prev_page\": null,"+ "\"next_page\": \"https://go.urbanairship.com/api/templates?page=2&page_size=1\""+ "}"; final ResponseParser responseParser = new ResponseParser<TemplateListingResponse>() { @Override public TemplateListingResponse parse(String response) throws IOException { return mapper.readValue(response, TemplateListingResponse.class); } }; assertEquals(lookupRequest.getResponseParser().parse(lookupJson), responseParser.parse(lookupJson)); assertEquals(listingRequest.getResponseParser().parse(listingJson), responseParser.parse(listingJson)); } }