package com.urbanairship.api.staticlists;
import com.google.common.net.HttpHeaders;
import com.urbanairship.api.client.Request;
import com.urbanairship.api.staticlists.parse.StaticListsObjectMapper;
import org.apache.http.entity.ContentType;
import org.codehaus.jackson.map.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
public class StaticListRequestTest {
private final static ObjectMapper MAPPER = StaticListsObjectMapper.getInstance();
private final static String STATIC_LIST_CREATE_PATH = "/api/lists/";
private final static String STATIC_LIST_UPDATE_PATH = "/api/lists/bleep";
StaticListRequest createRequest;
StaticListRequest updateRequest;
@Before
public void setupCreate() {
createRequest = StaticListRequest.newRequest("abc123")
.setDescription("create description")
.addExtra("key1", "val1")
.addExtra("key2", "val2");
}
@Before
public void setupUpdate() {
updateRequest = StaticListRequest.newUpdateRequest("bleep")
.setDescription("update description")
.addExtra("key3", "val3")
.addExtra("key4", "val4");
}
@Test
public void testContentType() throws Exception {
assertEquals(createRequest.getContentType(), ContentType.APPLICATION_JSON);
assertEquals(updateRequest.getContentType(), ContentType.APPLICATION_JSON);
}
@Test
public void testMethod() throws Exception {
assertEquals(createRequest.getHttpMethod(), Request.HttpMethod.POST);
assertEquals(updateRequest.getHttpMethod(), Request.HttpMethod.PUT);
}
@Test
public void testBody() throws Exception {
String NAME_KEY = "name";
String DESCRIPTION_KEY = "description";
String EXTRAS_KEY = "extra";
String createString = "{" +
"\"extra\":{" +
"\"key2\":\"val2\"," +
"\"key1\":\"val1\"" +
"}," +
"\"description\":\"create description\"," +
"\"name\":\"abc123\"" +
"}";
String updateString = "{" +
"\"extra\":{" +
"\"key4\":\"val4\"," +
"\"key3\":\"val3\"" +
"}," +
"\"description\":\"update description\"," +
"\"name\":\"bleep\"" +
"}";
Map<String, Object> createPayload = new HashMap<String, Object>();
Map<String, String> createExtras = new HashMap<String, String>();
createPayload.put(NAME_KEY, "abc123");
createPayload.put(DESCRIPTION_KEY, "create description");
createExtras.put("key1", "val1");
createExtras.put("key2", "val2");
createPayload.put(EXTRAS_KEY, createExtras);
Map<String, Object> updatePayload = new HashMap<String, Object>();
Map<String, String> updateExtras = new HashMap<String, String>();
updatePayload.put(NAME_KEY, "bleep");
updatePayload.put(DESCRIPTION_KEY, "update description");
updateExtras.put("key3", "val3");
updateExtras.put("key4", "val4");
updatePayload.put(EXTRAS_KEY, updateExtras);
String createPayloadString = MAPPER.writeValueAsString(createPayload);
String updatePayloadString = MAPPER.writeValueAsString(updatePayload);
assertEquals(MAPPER.readTree(createPayloadString), MAPPER.readTree(createString));
assertEquals(MAPPER.readTree(updatePayloadString), MAPPER.readTree(updateString));
assertEquals(MAPPER.readTree(createRequest.getRequestBody()), MAPPER.readTree(createPayloadString));
assertEquals(MAPPER.readTree(updateRequest.getRequestBody()), MAPPER.readTree(updatePayloadString));
}
@Test
public void testHeaders() throws Exception {
Map<String, String> headers = new HashMap<String, String>();
headers.put(HttpHeaders.ACCEPT, Request.UA_VERSION_JSON);
headers.put(HttpHeaders.CONTENT_TYPE, Request.CONTENT_TYPE_JSON);
assertEquals(updateRequest.getRequestHeaders(), headers);
assertEquals(createRequest.getRequestHeaders(), headers);
}
@Test
public void testURI() throws Exception {
URI baseURI = URI.create("https://go.urbanairship.com");
URI expectedCreateUri = URI.create("https://go.urbanairship.com" + STATIC_LIST_CREATE_PATH);
assertEquals(createRequest.getUri(baseURI), expectedCreateUri);
URI expectedUpdateUri = URI.create("https://go.urbanairship.com" + STATIC_LIST_UPDATE_PATH);
assertEquals(updateRequest.getUri(baseURI), expectedUpdateUri);
}
public void testParser() throws Exception {
String response = "{\"ok\": true}";
assertEquals(response, createRequest.getResponseParser().parse(response));
assertEquals(response, updateRequest.getResponseParser().parse(response));
}
}