blob: 4b0004a4068f49774092e5911484d4811cd79ade [file] [log] [blame]
package de.ids_mannheim.korap.web.controller;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.net.HttpHeaders;
import com.sun.jersey.api.client.ClientResponse;
import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
import de.ids_mannheim.korap.config.Attributes;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.utils.JsonUtils;
import de.ids_mannheim.korap.web.FastJerseyTest;
public class MatchInfoControllerTest extends FastJerseyTest {
@Autowired
HttpAuthorizationHandler handler;
@Test
public void testGetMatchInfoPublicCorpus () throws KustvaktException {
ClientResponse response = resource()
.path("corpus").path("GOE").path("AGA").path("01784")
.path("p36-100").path("matchInfo")
.queryParam("foundry", "*")
.get(ClientResponse.class);
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
String entity = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertNotNull(node);
assertEquals("GOE/AGA/01784", node.at("/textSigle").asText());
assertEquals("Belagerung von Mainz",
node.at("/title").asText());
assertEquals("Goethe, Johann Wolfgang von",
node.at("/author").asText());
assertTrue(node.at("/snippet").asText()
.startsWith("<span class=\"context-left\"></span>"
+ "<span class=\"match\">"
));
}
@Test
public void testGetMatchInfoNotAllowed () throws KustvaktException {
ClientResponse response = resource()
.path("corpus").path("GOE").path("AGI").path("04846")
.path("p36875-36876").path("matchInfo")
.queryParam("foundry", "*")
.get(ClientResponse.class);
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
String entity = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
assertEquals("1003", node.at("/errors/0/0").asText());
assertEquals("Retrieving match info with ID "
+ "match-GOE/AGI/04846-p36875-36876 is not allowed.",
node.at("/errors/0/1").asText());
assertTrue(node.at("/snippet").isMissingNode());
}
@Test
public void testGetMatchInfoWithAuthentication () throws KustvaktException {
ClientResponse response = resource()
.path("corpus").path("GOE").path("AGI").path("04846")
.path("p36875-36876").path("matchInfo")
.queryParam("foundry", "*")
.header(Attributes.AUTHORIZATION,
handler.createBasicAuthorizationHeaderValue(
"kustvakt", "kustvakt2015"))
.header(HttpHeaders.X_FORWARDED_FOR, "172.27.0.32")
.get(ClientResponse.class);
String entity = response.getEntity(String.class);
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
JsonNode node = JsonUtils.readTree(entity);
assertNotNull(node);
assertEquals("GOE/AGI/04846", node.at("/textSigle").asText());
assertEquals("Zweiter römischer Aufenthalt",
node.at("/title").asText());
assertEquals("vom Juni 1787 bis April 1788",
node.at("/subTitle").asText());
assertEquals("Goethe, Johann Wolfgang von",
node.at("/author").asText());
assertTrue(node.at("/snippet").asText()
.startsWith("<span class=\"context-left\"></span>"
+ "<span class=\"match\">"
));
assertEquals("QAO-NC-LOC:ids", node.at("/availability").asText());
}
// @Test
// public void testMatchInfoSave () {
//
// }
//
//
// @Test
// public void testMatchInfoDelete () {
//
// }
//
//
// @Test
// public void testGetMatches () {
//
// }
@Override
public void initMethod () throws KustvaktException {
// helper().runBootInterfaces();
}
}