blob: a26a9454b9a027030eb0a161ae253d66f185a8e0 [file] [log] [blame]
package de.ids_mannheim.korap.response;
import java.io.*;
import de.ids_mannheim.korap.response.Messages;
import de.ids_mannheim.korap.response.Notifications;
import de.ids_mannheim.korap.response.Response;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class TestResponse {
ObjectMapper mapper = new ObjectMapper();
@Test
public void testResponse () throws IOException {
Response resp = new Response();
JsonNode respJson = mapper.readTree(resp.toJsonString());
assertEquals(
"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
respJson.at("/@context").asText());
assertEquals("", respJson.at("/meta").asText());
resp.setVersion("0.24");
resp.setNode("Tanja");
assertEquals("0.24", resp.getVersion());
assertEquals("Tanja", resp.getNode());
assertFalse(resp.hasWarnings());
assertFalse(resp.hasMessages());
assertFalse(resp.hasErrors());
respJson = mapper.readTree(resp.toJsonString());
assertEquals("0.24", respJson.at("/meta/version").asText());
assertEquals("Tanja", respJson.at("/meta/node").asText());
resp.setName("Index");
respJson = mapper.readTree(resp.toJsonString());
assertEquals("Index-0.24", respJson.at("/meta/version").asText());
assertEquals("Tanja", respJson.at("/meta/node").asText());
resp.setBenchmark("took a while");
resp.setListener("localhost:3000");
respJson = mapper.readTree(resp.toJsonString());
assertEquals("localhost:3000", respJson.at("/meta/listener").asText());
assertEquals("took a while", respJson.at("/meta/benchmark").asText());
};
@Test
public void testResponseNotifications () throws IOException {
Response resp = new Response();
JsonNode respJson = mapper.readTree(resp.toJsonString());
assertEquals(
"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
respJson.at("/@context").asText());
assertEquals("", respJson.at("/meta").asText());
resp.setVersion("0.24");
resp.setNode("Tanja");
assertEquals("0.24", resp.getVersion());
assertEquals("Tanja", resp.getNode());
assertFalse(resp.hasWarnings());
assertFalse(resp.hasMessages());
assertFalse(resp.hasErrors());
respJson = mapper.readTree(resp.toJsonString());
assertEquals("0.24", respJson.at("/meta/version").asText());
assertEquals("Tanja", respJson.at("/meta/node").asText());
resp.addWarning(1, "Fehler 1");
resp.addWarning(2, "Fehler 2");
resp.addWarning(3, "Fehler 3");
resp.addError(4, "Fehler 4");
respJson = mapper.readTree(resp.toJsonString());
assertEquals("0.24", respJson.at("/meta/version").asText());
assertEquals("Tanja", respJson.at("/meta/node").asText());
assertEquals("Fehler 1", respJson.at("/warnings/0/1").asText());
assertEquals("Fehler 2", respJson.at("/warnings/1/1").asText());
assertEquals("Fehler 3", respJson.at("/warnings/2/1").asText());
assertEquals("Fehler 4", respJson.at("/errors/0/1").asText());
};
// TODO: Skip this for the moment and refactor later
@Ignore
public void testResponseDeserialzation () throws IOException {
String jsonResponse = "{\"version\":\"0.38\"}";
Response kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("0.38", kresp.getVersion());
assertNull(kresp.getName());
assertEquals(jsonResponse, kresp.toJsonString());
jsonResponse = "{\"meta\":{\"version\":\"seaweed-0.49\"}}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("0.49", kresp.getVersion());
assertEquals("seaweed", kresp.getName());
assertTrue(kresp.toJsonString().contains("seaweed-0.49"));
jsonResponse = "{\"version\":\"seaweed-\"}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("seaweed-", kresp.getVersion());
assertNull(kresp.getName());
assertTrue(kresp.toJsonString().contains("seaweed-"));
jsonResponse = "{\"timeExceeded\":true}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertTrue(kresp.hasTimeExceeded());
assertTrue(kresp.hasWarnings());
jsonResponse = "{\"benchmark\":\"40.5s\", \"foo\":\"bar\"}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("40.5s", kresp.getBenchmark());
jsonResponse = "{\"listener\":\"10.0.10.14:678\", \"foo\":\"bar\"}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("10.0.10.14:678", kresp.getListener());
jsonResponse = "{\"node\":\"tanja\", \"foo\":\"bar\"}";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("tanja", kresp.getNode());
jsonResponse = "{\"node\":\"tanja\", \"version\":\"seaweed-0.49\", "
+ " \"benchmark\":\"40.5s\", \"listener\":\"10.0.10.14:678\","
+ "\"timeExceeded\":true }";
kresp = mapper.readValue(jsonResponse, Response.class);
assertEquals("0.49", kresp.getVersion());
assertEquals("seaweed", kresp.getName());
assertEquals("40.5s", kresp.getBenchmark());
assertEquals("10.0.10.14:678", kresp.getListener());
assertEquals("tanja", kresp.getNode());
assertTrue(kresp.hasTimeExceeded());
assertTrue(kresp.hasWarnings());
jsonResponse = "{\"warnings\":[[123,\"This is a warning\"],"
+ "[124,\"This is a second warning\"]],"
+ "\"errors\":[[125,\"This is a single error\"]], "
+ " \"node\":\"tanja\", \"version\":\"seaweed-0.49\", "
+ " \"benchmark\":\"40.5s\", \"listener\":\"10.0.10.14:678\","
+ "\"timeExceeded\":true }";
kresp = mapper.readValue(jsonResponse, Response.class);
assertTrue(kresp.hasWarnings());
assertTrue(kresp.hasErrors());
assertFalse(kresp.hasMessages());
assertEquals(kresp.getError(0).getMessage(), "This is a single error");
// THIS MAY BREAK!
assertEquals(kresp.getWarning(0).getMessage(), "This is a warning");
assertEquals(kresp.getWarning(1).getMessage(),
"This is a second warning");
assertEquals(kresp.getWarning(2).getMessage(),
"Response time exceeded");
assertEquals("0.49", kresp.getVersion());
assertEquals("seaweed", kresp.getName());
assertEquals("40.5s", kresp.getBenchmark());
assertEquals("10.0.10.14:678", kresp.getListener());
assertEquals("tanja", kresp.getNode());
assertTrue(kresp.hasTimeExceeded());
};
@Test
public void testResponseJSONadd () throws IOException {
Response resp = new Response();
ObjectNode jNode = mapper.createObjectNode();
jNode.put("Hui", "works");
resp.addJsonNode("test", jNode);
JsonNode respJson = mapper.readTree(resp.toJsonString());
assertEquals(
"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld",
respJson.at("/@context").asText());
assertEquals("works", respJson.at("/test/Hui").asText());
};
};