Set up the test framework with SpringServlet.
Change-Id: Ie5a4e05e54fdf4c77b52daf9a34808e2bf7f0581
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
index 66d6e1c..6f2835f 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
@@ -28,6 +28,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
import com.fasterxml.jackson.databind.JsonNode;
import com.sun.jersey.core.util.MultivaluedMapImpl;
@@ -70,6 +71,7 @@
*/
@Controller
@Path("/")
+@RequestMapping ( "/" )
@ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public class SearchService {
@@ -312,133 +314,133 @@
}
-// /* EM: potentially an unused service! */
-// /** Builds a json query serialization from the given parameters.
-// *
-// * @param locale
-// * @param securityContext
-// * @param q query string
-// * @param ql query language
-// * @param v version
-// * @param context
-// * @param cutoff true if the number of results should be limited
-// * @param pageLength number of results per page
-// * @param pageIndex
-// * @param startPage
-// * @param cq collection query
-// * @return
-// */
-// // ref query parameter removed!
-// // EM: change the HTTP method to from TRACE to GET
-// // EM: change path from search to query
-// @GET
-// @Path("query")
-// public Response serializeQuery (@Context Locale locale,
-// @Context SecurityContext securityContext, @QueryParam("q") String q,
-// @QueryParam("ql") String ql, @QueryParam("v") String v,
-// @QueryParam("context") String context,
-// @QueryParam("cutoff") Boolean cutoff,
-// @QueryParam("count") Integer pageLength,
-// @QueryParam("offset") Integer pageIndex,
-// @QueryParam("page") Integer startPage,
-// @QueryParam("cq") String cq) {
-// TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
-// QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
-// if (cq != null)
-// ss.setCollection(cq);
-//
-// MetaQueryBuilder meta = new MetaQueryBuilder();
-// if (pageIndex != null)
-// meta.addEntry("startIndex", pageIndex);
-// if (pageIndex == null && startPage != null)
-// meta.addEntry("startPage", startPage);
-// if (pageLength != null)
-// meta.addEntry("count", pageLength);
-// if (context != null)
-// meta.setSpanContext(context);
-// meta.addEntry("cutOff", cutoff);
-//
-// ss.setMeta(meta.raw());
-// String result = ss.toJSON();
-// jlog.debug("Query: "+result);
-// return Response.ok(result).build();
-// }
-//
-//
-// /**
-// * currently only supports either no reference at all in which
-// * case all corpora are retrieved or a corpus name like "WPD".
-// * No virtual collections supported!
-// *
-// * @param locale
-// * @param q
-// * @param ql
-// * @param v
-// * @param pageLength
-// * @param pageIndex
-// * @return
-// */
-//
-// // todo: does cq have any sensible worth here? --> would say no! --> is
-// // useful in non type/id scenarios
-//
-// /* EM: potentially an unused service! */
-// // EM: build query using the given virtual collection id
-// // EM: change the HTTP method to from TRACE to GET
-// // EM: change path from search to query
-// // EM: there is no need to check resource licenses since the service just serialize a query serialization
-// @GET
-// @Path("{type}/{id}/query")
-// public Response serializeQueryWithResource (@Context Locale locale,
-// @Context SecurityContext securityContext, @QueryParam("q") String q,
-// @QueryParam("ql") String ql, @QueryParam("v") String v,
-// @QueryParam("context") String context,
-// @QueryParam("cutoff") Boolean cutoff,
-// @QueryParam("count") Integer pageLength,
-// @QueryParam("offset") Integer pageIndex,
-// @QueryParam("page") Integer startPage,
-// @PathParam("type") String type, @PathParam("id") String id) {
-// TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
-// type = StringUtils.normalize(type);
-// id = StringUtils.decodeHTML(id);
-//
-// QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
-//
-// MetaQueryBuilder meta = new MetaQueryBuilder();
-// if (pageIndex != null)
-// meta.addEntry("startIndex", pageIndex);
-// if (pageIndex == null && startPage != null)
-// meta.addEntry("startPage", startPage);
-// if (pageLength != null)
-// meta.addEntry("count", pageLength);
-// if (context != null)
-// meta.setSpanContext(context);
-// if (cutoff != null)
-// meta.addEntry("cutOff", cutoff);
-//
-// ss.setMeta(meta.raw());
-//
-// KoralCollectionQueryBuilder cquery = new KoralCollectionQueryBuilder();
-// cquery.setBaseQuery(ss.toJSON());
-//
-// String query = "";
-// // EM: is this necessary at all?
-// KustvaktResource resource = isCollectionIdValid(ctx.getName(), id);
-// if (resource!=null){
-// if (resource instanceof VirtualCollection) {
-// JsonNode node = cquery.and().mergeWith(resource.getData());
-// query = JsonUtils.toJSON(node);
-// }
-// else if (resource instanceof Corpus) {
-// cquery.and().with(Attributes.CORPUS_SIGLE, "=",
-// resource.getPersistentID());
-// query = cquery.toJSON();
-// }
-// }
-//
-// jlog.debug("Query: "+query);
-// return Response.ok(query).build();
-// }
+ /* EM: potentially an unused service! */
+ /** Builds a json query serialization from the given parameters.
+ *
+ * @param locale
+ * @param securityContext
+ * @param q query string
+ * @param ql query language
+ * @param v version
+ * @param context
+ * @param cutoff true if the number of results should be limited
+ * @param pageLength number of results per page
+ * @param pageIndex
+ * @param startPage
+ * @param cq collection query
+ * @return
+ */
+ // ref query parameter removed!
+ // EM: change the HTTP method to from TRACE to GET
+ // EM: change path from search to query
+ @GET
+ @Path("query")
+ public Response serializeQuery (@Context Locale locale,
+ @Context SecurityContext securityContext, @QueryParam("q") String q,
+ @QueryParam("ql") String ql, @QueryParam("v") String v,
+ @QueryParam("context") String context,
+ @QueryParam("cutoff") Boolean cutoff,
+ @QueryParam("count") Integer pageLength,
+ @QueryParam("offset") Integer pageIndex,
+ @QueryParam("page") Integer startPage,
+ @QueryParam("cq") String cq) {
+ TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
+ QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
+ if (cq != null)
+ ss.setCollection(cq);
+
+ MetaQueryBuilder meta = new MetaQueryBuilder();
+ if (pageIndex != null)
+ meta.addEntry("startIndex", pageIndex);
+ if (pageIndex == null && startPage != null)
+ meta.addEntry("startPage", startPage);
+ if (pageLength != null)
+ meta.addEntry("count", pageLength);
+ if (context != null)
+ meta.setSpanContext(context);
+ meta.addEntry("cutOff", cutoff);
+
+ ss.setMeta(meta.raw());
+ String result = ss.toJSON();
+ jlog.debug("Query: "+result);
+ return Response.ok(result).build();
+ }
+
+
+ /**
+ * currently only supports either no reference at all in which
+ * case all corpora are retrieved or a corpus name like "WPD".
+ * No virtual collections supported!
+ *
+ * @param locale
+ * @param q
+ * @param ql
+ * @param v
+ * @param pageLength
+ * @param pageIndex
+ * @return
+ */
+
+ // todo: does cq have any sensible worth here? --> would say no! --> is
+ // useful in non type/id scenarios
+
+ /* EM: potentially an unused service! */
+ // EM: build query using the given virtual collection id
+ // EM: change the HTTP method to from TRACE to GET
+ // EM: change path from search to query
+ // EM: there is no need to check resource licenses since the service just serialize a query serialization
+ @GET
+ @Path("{type}/{id}/query")
+ public Response serializeQueryWithResource (@Context Locale locale,
+ @Context SecurityContext securityContext, @QueryParam("q") String q,
+ @QueryParam("ql") String ql, @QueryParam("v") String v,
+ @QueryParam("context") String context,
+ @QueryParam("cutoff") Boolean cutoff,
+ @QueryParam("count") Integer pageLength,
+ @QueryParam("offset") Integer pageIndex,
+ @QueryParam("page") Integer startPage,
+ @PathParam("type") String type, @PathParam("id") String id) {
+ TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
+ type = StringUtils.normalize(type);
+ id = StringUtils.decodeHTML(id);
+
+ QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
+
+ MetaQueryBuilder meta = new MetaQueryBuilder();
+ if (pageIndex != null)
+ meta.addEntry("startIndex", pageIndex);
+ if (pageIndex == null && startPage != null)
+ meta.addEntry("startPage", startPage);
+ if (pageLength != null)
+ meta.addEntry("count", pageLength);
+ if (context != null)
+ meta.setSpanContext(context);
+ if (cutoff != null)
+ meta.addEntry("cutOff", cutoff);
+
+ ss.setMeta(meta.raw());
+
+ KoralCollectionQueryBuilder cquery = new KoralCollectionQueryBuilder();
+ cquery.setBaseQuery(ss.toJSON());
+
+ String query = "";
+ // EM: is this necessary at all?
+ KustvaktResource resource = isCollectionIdValid(ctx.getName(), id);
+ if (resource!=null){
+ if (resource instanceof VirtualCollection) {
+ JsonNode node = cquery.and().mergeWith(resource.getData());
+ query = JsonUtils.toJSON(node);
+ }
+ else if (resource instanceof Corpus) {
+ cquery.and().with(Attributes.CORPUS_SIGLE, "=",
+ resource.getPersistentID());
+ query = cquery.toJSON();
+ }
+ }
+
+ jlog.debug("Query: "+query);
+ return Response.ok(query).build();
+ }
// EM: prototype
private KustvaktResource isCollectionIdValid (String username, String collectionId) {
diff --git a/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java b/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
index 74def43..79042d5 100644
--- a/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
+++ b/src/test/java/de/ids_mannheim/korap/config/BeanConfigTest.java
@@ -8,6 +8,7 @@
import org.junit.runners.model.InitializationError;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -31,6 +32,7 @@
public void init () throws Exception {
+// context = new ClassPathXmlApplicationContext("test-default-config.xml");
assertNotNull("Application context must not be null!", this.context);
jlog.debug("running one-time before init for class "
+ this.getClass().getSimpleName() + " ...");
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyTest.java b/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyTest.java
index 87457bd..932ffb1 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyTest.java
@@ -4,6 +4,7 @@
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.core.DefaultResourceConfig;
import com.sun.jersey.spi.inject.SingletonTypeInjectableProvider;
+import com.sun.jersey.spi.spring.container.servlet.SpringServlet;
import com.sun.jersey.test.framework.AppDescriptor;
import com.sun.jersey.test.framework.LowLevelAppDescriptor;
import com.sun.jersey.test.framework.WebAppDescriptor;
@@ -16,6 +17,7 @@
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
+import org.springframework.web.context.ContextLoaderListener;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriBuilder;
@@ -31,7 +33,8 @@
private final static String API_VERSION = "v0.1";
- private static DefaultResourceConfig resourceConfig = new DefaultResourceConfig();
+ private static DefaultResourceConfig resourceConfig =
+ new DefaultResourceConfig();
private static TestContainerFactory testContainerFactory;
@@ -99,7 +102,11 @@
if (classPackages == null)
ad = new LowLevelAppDescriptor.Builder(resourceConfig).build();
else
- ad = new WebAppDescriptor.Builder(classPackages).build();
+ ad = new WebAppDescriptor.Builder(classPackages)
+ .servletClass(SpringServlet.class)
+ .contextListenerClass(ContextLoaderListener.class)
+ .contextParam("contextConfigLocation", "classpath:test-default-config.xml")
+ .build();
TestContainerFactory tcf = testContainerFactory;
if (tcf == null) {
@@ -109,8 +116,8 @@
tcf = new GrizzlyWebTestContainerFactory();
}
- testContainer = tcf.create(UriBuilder.fromUri(containerURI)
- .port(port).build(), ad);
+ testContainer = tcf.create(
+ UriBuilder.fromUri(containerURI).port(port).build(), ad);
client = testContainer.getClient();
if (client == null) {
client = Client.create(ad.getClientConfig());
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
index 170ab18..73dbc4a 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/MatchInfoServiceTest.java
@@ -30,7 +30,7 @@
@Test
public void testGetMatchInfoPublicCorpus () {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("corpus").path("GOE").path("AGA").path("01784")
.path("p36-100").path("matchInfo")
.queryParam("foundry", "*")
@@ -56,7 +56,7 @@
@Test
public void testGetMatchInfoNotAllowed () {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("corpus").path("GOE").path("AGI").path("04846")
.path("p36875-36876").path("matchInfo")
.queryParam("foundry", "*")
@@ -76,7 +76,7 @@
@Test
public void testGetMatchInfoWithAuthentication () {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("corpus").path("GOE").path("AGI").path("04846")
.path("p36875-36876").path("matchInfo")
.queryParam("foundry", "*")
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
index f735063..e33eb9e 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/QuerySerializationServiceTest.java
@@ -1,4 +1,5 @@
package de.ids_mannheim.korap.web.service.full;
+
/**
* @author hanl, margaretha
* @lastUpdate 19/04/2017
@@ -31,7 +32,7 @@
@Override
public void initMethod () throws KustvaktException {
-// helper().runBootInterfaces();
+ // helper().runBootInterfaces();
}
@@ -41,15 +42,14 @@
"de.ids_mannheim.korap.web.filter",
"de.ids_mannheim.korap.web.utils");
}
-
+
+
@Test
public void testQuerySerializationFilteredPublic () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("corpus/WPD13/query")
- .queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp")
- .queryParam("context", "base/s:s")
+
+ .path("corpus/WPD13/query").queryParam("q", "[orth=der]")
+ .queryParam("ql", "poliqarp").queryParam("context", "base/s:s")
.method("GET", ClientResponse.class);
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
@@ -59,17 +59,15 @@
assertEquals("corpusSigle", node.at("/collection/key").asText());
assertEquals("WPD13", node.at("/collection/value").asText());
}
-
-
+
+
@Test
public void testQuerySerializationUnexistingResource () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("corpus/ZUW19/query")
- .queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp")
- .queryParam("context", "base/s:s")
+
+ .path("corpus/ZUW19/query").queryParam("q", "[orth=der]")
+ .queryParam("ql", "poliqarp").queryParam("context", "base/s:s")
.method("GET", ClientResponse.class);
assertEquals(ClientResponse.Status.BAD_REQUEST.getStatusCode(),
response.getStatus());
@@ -79,15 +77,14 @@
assertEquals("[Cannot found public Corpus with ids: [ZUW19]]",
node.at("/errors/0/2").asText());
}
-
+
+
@Test
public void testQuerySerializationWithNonPublicCorpus () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("corpus/BRZ10/query")
- .queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp")
- .queryParam("context", "base/s:s")
+
+ .path("corpus/BRZ10/query").queryParam("q", "[orth=der]")
+ .queryParam("ql", "poliqarp").queryParam("context", "base/s:s")
.method("GET", ClientResponse.class);
assertEquals(ClientResponse.Status.BAD_REQUEST.getStatusCode(),
response.getStatus());
@@ -98,12 +95,12 @@
node.at("/errors/0/2").asText());
}
+
@Test
public void testQuerySerializationWithAuthentication () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("corpus/BRZ10/query")
- .queryParam("q", "[orth=der]")
+
+ .path("corpus/BRZ10/query").queryParam("q", "[orth=der]")
.queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
BasicHttpAuth.encode("kustvakt", "kustvakt2015"))
@@ -118,23 +115,24 @@
assertEquals("BRZ10", node.at("/collection/value").asText());
}
+
@Test
public void testQuerySerializationWithNewCollection () {
// Add Virtual Collection
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("virtualcollection")
- .queryParam("filter", "false")
- .queryParam("query", "creationDate since 1775 & corpusSigle=GOE")
+
+ .path("virtualcollection").queryParam("filter", "false")
+ .queryParam("query",
+ "creationDate since 1775 & corpusSigle=GOE")
.queryParam("name", "Weimarer Werke")
.queryParam("description", "Goethe-Werke in Weimar (seit 1775)")
.header(Attributes.AUTHORIZATION,
BasicHttpAuth.encode("kustvakt", "kustvakt2015"))
.post(ClientResponse.class);
-
+
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
-
+
String ent = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(ent);
assertNotNull(node);
@@ -143,7 +141,7 @@
// Get virtual collections
response = resource()
- .path(getAPIVersion())
+
.path("collection")
.header(Attributes.AUTHORIZATION,
BasicHttpAuth.encode("kustvakt", "kustvakt2015"))
@@ -166,12 +164,9 @@
// query serialization service
response = resource()
- .path(getAPIVersion())
- .path("collection")
- .path(id)
- .path("query")
- .queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp")
+
+ .path("collection").path(id).path("query")
+ .queryParam("q", "[orth=der]").queryParam("ql", "poliqarp")
.queryParam("context", "base/s:s")
.header(Attributes.AUTHORIZATION,
BasicHttpAuth.encode("kustvakt", "kustvakt2015"))
@@ -181,105 +176,100 @@
ent = response.getEntity(String.class);
node = JsonUtils.readTree(ent);
assertNotNull(node);
- System.out.println("NODE "+ent);
+ System.out.println("NODE " + ent);
assertEquals("koral:docGroup", node.at("/collection/@type").asText());
- assertEquals("koral:doc", node.at("/collection/operands/0/@type")
- .asText());
- assertEquals("creationDate", node.at("/collection/operands/0/key")
- .asText());
- assertEquals("1775", node.at("/collection/operands/0/value")
- .asText());
- assertEquals("type:date", node.at("/collection/operands/0/type")
- .asText());
- assertEquals("match:geq", node.at("/collection/operands/0/match")
- .asText());
-
- assertEquals("koral:doc", node.at("/collection/operands/1/@type")
- .asText());
- assertEquals("corpusSigle", node.at("/collection/operands/1/key")
- .asText());
- assertEquals("GOE", node.at("/collection/operands/1/value")
- .asText());
- assertEquals("match:eq", node.at("/collection/operands/1/match")
- .asText());
+ assertEquals("koral:doc",
+ node.at("/collection/operands/0/@type").asText());
+ assertEquals("creationDate",
+ node.at("/collection/operands/0/key").asText());
+ assertEquals("1775", node.at("/collection/operands/0/value").asText());
+ assertEquals("type:date",
+ node.at("/collection/operands/0/type").asText());
+ assertEquals("match:geq",
+ node.at("/collection/operands/0/match").asText());
+
+ assertEquals("koral:doc",
+ node.at("/collection/operands/1/@type").asText());
+ assertEquals("corpusSigle",
+ node.at("/collection/operands/1/key").asText());
+ assertEquals("GOE", node.at("/collection/operands/1/value").asText());
+ assertEquals("match:eq",
+ node.at("/collection/operands/1/match").asText());
}
-
+
+
@Test
public void testQuerySerializationOfVirtualCollection () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("collection/GOE-VC/query")
- .queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp")
- .queryParam("context", "base/s:s")
+
+ .path("collection/GOE-VC/query").queryParam("q", "[orth=der]")
+ .queryParam("ql", "poliqarp").queryParam("context", "base/s:s")
.method("GET", ClientResponse.class);
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
String ent = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(ent);
assertNotNull(node);
- assertEquals("koral:doc", node.at("/collection/operands/0/@type")
- .asText());
- assertEquals("corpusSigle", node.at("/collection/operands/0/key").asText());
+ assertEquals("koral:doc",
+ node.at("/collection/operands/0/@type").asText());
+ assertEquals("corpusSigle",
+ node.at("/collection/operands/0/key").asText());
assertEquals("GOE", node.at("/collection/operands/0/value").asText());
- assertEquals("koral:doc", node.at("/collection/operands/1/@type")
- .asText());
- assertEquals("creationDate", node.at("/collection/operands/1/key").asText());
- assertEquals("1810-01-01", node.at("/collection/operands/1/value").asText());
+ assertEquals("koral:doc",
+ node.at("/collection/operands/1/@type").asText());
+ assertEquals("creationDate",
+ node.at("/collection/operands/1/key").asText());
+ assertEquals("1810-01-01",
+ node.at("/collection/operands/1/value").asText());
}
-
+
+
@Test
public void testMetaQuerySerialization () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("query")
- .queryParam("context", "sentence")
- .queryParam("count", "20")
- .queryParam("page", "5")
- .queryParam("cutoff", "true")
- .queryParam("q", "[pos=ADJA]")
+
+ .path("query").queryParam("context", "sentence")
+ .queryParam("count", "20").queryParam("page", "5")
+ .queryParam("cutoff", "true").queryParam("q", "[pos=ADJA]")
.queryParam("ql", "poliqarp")
.method("GET", ClientResponse.class);
assertEquals(response.getStatus(),
ClientResponse.Status.OK.getStatusCode());
-
+
String ent = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(ent);
-
+
assertEquals("sentence", node.at("/meta/context").asText());
assertEquals(20, node.at("/meta/count").asInt());
- assertEquals(5, node.at("/meta/startPage").asInt());
+ assertEquals(5, node.at("/meta/startPage").asInt());
assertEquals(true, node.at("/meta/cutOff").asBoolean());
-
+
assertEquals("koral:term", node.at("/query/wrap/@type").asText());
assertEquals("pos", node.at("/query/wrap/layer").asText());
assertEquals("match:eq", node.at("/query/wrap/match").asText());
assertEquals("ADJA", node.at("/query/wrap/key").asText());
}
+
@Test
public void testMetaQuerySerializationWithOffset () {
ClientResponse response = resource()
- .path(getAPIVersion())
- .path("query")
- .queryParam("context", "sentence")
- .queryParam("count", "20")
- .queryParam("page", "5")
- .queryParam("offset", "2")
- .queryParam("cutoff", "true")
- .queryParam("q", "[pos=ADJA]")
- .queryParam("ql", "poliqarp")
+
+ .path("query").queryParam("context", "sentence")
+ .queryParam("count", "20").queryParam("page", "5")
+ .queryParam("offset", "2").queryParam("cutoff", "true")
+ .queryParam("q", "[pos=ADJA]").queryParam("ql", "poliqarp")
.method("GET", ClientResponse.class);
assertEquals(response.getStatus(),
ClientResponse.Status.OK.getStatusCode());
-
+
String ent = response.getEntity(String.class);
JsonNode node = JsonUtils.readTree(ent);
-
+
assertEquals("sentence", node.at("/meta/context").asText());
assertEquals(20, node.at("/meta/count").asInt());
- assertEquals(2, node.at("/meta/startIndex").asInt());
+ assertEquals(2, node.at("/meta/startIndex").asInt());
assertEquals(true, node.at("/meta/cutOff").asBoolean());
}
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
index 1a7afff..909a250 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchServiceTest.java
@@ -8,6 +8,8 @@
import java.util.Iterator;
import java.util.Set;
+import javax.ws.rs.core.MediaType;
+
import org.eclipse.jetty.http.HttpHeaders;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -38,7 +40,7 @@
@Override
public void initMethod () throws KustvaktException {
// helper().runBootInterfaces();
- helper().setupAccount();
+// helper().setupAccount();
}
@@ -52,12 +54,14 @@
@Test
public void testSearchQueryPublicCorpora () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=der]")
- .queryParam("ql", "poliqarp").get(ClientResponse.class);
+ .queryParam("ql", "poliqarp")
+ .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
// assertEquals(ClientResponse.Status.OK.getStatusCode(),
// response.getStatus());
String ent = response.getEntity(String.class);
+ System.out.println(ent);
JsonNode node = JsonUtils.readTree(ent);
assertNotNull(node);
assertEquals("koral:doc", node.at("/collection/@type").asText());
@@ -72,7 +76,7 @@
@Test
public void testSearchQueryWithMeta () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=der]")
.queryParam("ql", "poliqarp").queryParam("cutoff", "true")
.queryParam("count", "5").queryParam("page", "1")
@@ -93,7 +97,7 @@
@Test
public void testSearchQueryFreeExtern () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=die]")
.queryParam("ql", "poliqarp")
.header(HttpHeaders.X_FORWARDED_FOR, "149.27.0.32")
@@ -115,7 +119,7 @@
@Test
public void testSearchQueryFreeIntern () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=die]")
.queryParam("ql", "poliqarp")
.header(HttpHeaders.X_FORWARDED_FOR, "172.27.0.32")
@@ -138,7 +142,7 @@
@Test
public void testSearchQueryExternAuthorized () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=die]")
.queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
@@ -164,7 +168,7 @@
@Test
public void testSearchQueryInternAuthorized () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=die]")
.queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
@@ -195,7 +199,7 @@
@Test
@Ignore
public void testSearchQueryWithCollectionQueryAuthorizedWithoutIP () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=das]")
.queryParam("ql", "poliqarp")
.queryParam("cq", "textClass=politik & corpusSigle=BRZ10")
@@ -225,7 +229,7 @@
@Test
@Ignore
public void testSearchQueryAuthorizedWithoutIP () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=die]")
.queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
@@ -251,7 +255,7 @@
@Test
@Ignore
public void testSearchForPublicCorpusWithStringId () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("corpus").path("GOE").path("search")
.queryParam("q", "blau").queryParam("ql", "poliqarp")
.get(ClientResponse.class);
@@ -277,7 +281,7 @@
@Test
@Ignore
public void testSearchForVirtualCollectionWithStringId () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("collection").path("GOE-VC").path("search")
.queryParam("q", "blau").queryParam("ql", "poliqarp")
.get(ClientResponse.class);
@@ -315,7 +319,7 @@
}
}
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("corpus").path(id).path("search").queryParam("q", "blau")
.queryParam("ql", "poliqarp").get(ClientResponse.class);
@@ -342,7 +346,7 @@
@Test
@Ignore
public void testSearchForCorpusWithStringIdUnauthorized () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("corpus").path("WPD15").path("search")
.queryParam("q", "blau").queryParam("ql", "poliqarp")
.get(ClientResponse.class);
@@ -359,7 +363,7 @@
@Test
@Ignore
public void testSearchForSpecificCorpus () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("corpus").path("GOE").path("search")
.queryParam("q", "[orth=das]").queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
@@ -401,7 +405,7 @@
// System.out.println("Corpus "+id);
}
}
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("corpus").path(id).path("search")
.queryParam("q", "[orth=das]").queryParam("ql", "poliqarp")
.header(Attributes.AUTHORIZATION,
@@ -427,7 +431,7 @@
@Test
public void testSearchSentenceMeta () {
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").queryParam("q", "[orth=der]")
.queryParam("ql", "poliqarp").queryParam("context", "sentence")
.get(ClientResponse.class);
@@ -446,7 +450,7 @@
QuerySerializer s = new QuerySerializer();
s.setQuery("(der) or (das)", "CQL");
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").post(ClientResponse.class, s.toJSON());
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
@@ -465,7 +469,7 @@
s.setQuery("[orth=der]", "poliqarp");
s.setCollection("corpusSigle=GOE");
- ClientResponse response = resource().path("kustvakt")
+ ClientResponse response = resource()
.path("search").post(ClientResponse.class, s.toJSON());
assertEquals(ClientResponse.Status.OK.getStatusCode(),
response.getStatus());
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
index 5dc44c2..d2b1386 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/SearchWithAvailabilityTest.java
@@ -162,7 +162,7 @@
private ClientResponse builtSimpleClientResponse (String collectionQuery) {
- return resource().path(getAPIVersion()).path("search")
+ return resource().path("search")
.queryParam("q", "[orth=das]").queryParam("ql", "poliqarp")
.queryParam("cq", collectionQuery).get(ClientResponse.class);
}
@@ -170,7 +170,7 @@
private ClientResponse builtClientResponseWithIP (String collectionQuery,
String ip) {
- return resource().path(getAPIVersion()).path("search")
+ return resource().path("search")
.queryParam("q", "[orth=das]").queryParam("ql", "poliqarp")
.queryParam("cq", collectionQuery)
.header(Attributes.AUTHORIZATION,
diff --git a/src/test/java/de/ids_mannheim/korap/web/service/full/StatisticsServiceTest.java b/src/test/java/de/ids_mannheim/korap/web/service/full/StatisticsServiceTest.java
index 3252ed8..335f564 100644
--- a/src/test/java/de/ids_mannheim/korap/web/service/full/StatisticsServiceTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/service/full/StatisticsServiceTest.java
@@ -40,7 +40,7 @@
public void testGetStatisticsNoResource ()
throws JsonProcessingException, IOException {
String collectionQuery = "corpusSigle=WPD15";
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("statistics")
.queryParam("collectionQuery", collectionQuery)
.get(ClientResponse.class);
@@ -58,7 +58,7 @@
public void testGetStatisticsWithCollectionQuery1 ()
throws JsonProcessingException, IOException {
String collectionQuery = "corpusSigle=GOE";
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("statistics")
.queryParam("collectionQuery", collectionQuery)
.get(ClientResponse.class);
@@ -75,7 +75,7 @@
@Test
public void testGetStatisticsWithCollectionQuery2 ()
throws JsonProcessingException, IOException {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("statistics")
.queryParam("collectionQuery", "creationDate since 1810")
.get(ClientResponse.class);
@@ -93,7 +93,7 @@
@Test
public void testGetStatisticsWithWrongCollectionQuery ()
throws JsonProcessingException, IOException {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("statistics")
.queryParam("collectionQuery", "creationDate geq 1810")
.get(ClientResponse.class);
@@ -113,7 +113,7 @@
@Test
public void testGetStatisticsWithWrongCollectionQuery2 ()
throws JsonProcessingException, IOException {
- ClientResponse response = resource().path(getAPIVersion())
+ ClientResponse response = resource()
.path("statistics")
.queryParam("collectionQuery", "creationDate >= 1810")
.get(ClientResponse.class);
diff --git a/src/test/resources/test-default-config.xml b/src/test/resources/test-default-config.xml
index 8c6464d..09d4822 100644
--- a/src/test/resources/test-default-config.xml
+++ b/src/test/resources/test-default-config.xml
@@ -34,9 +34,11 @@
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<array>
- <value>classpath:jdbc.properties</value>
+ <value>classpath:test-jdbc.properties</value>
<value>classpath:hibernate.properties</value>
<!-- <value>file:./jdbc.properties</value> -->
+ <value>file:./kustvakt.conf</value>
+ <value>classpath:kustvakt.conf</value>
</array>
</property>
</bean>
@@ -55,17 +57,29 @@
<!--class="org.apache.commons.dbcp2.BasicDataSource" -->
<!-- org.springframework.jdbc.datasource.SingleConnectionDataSource -->
- <!-- org.springframework.jdbc.datasource.DriverManagerDataSource -->
- <bean id="dataSource"
+ <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
+ lazy-init="true">
+ <property name="driverClassName" value="${jdbc.driverClassName}" />
+ <property name="url" value="${jdbc.url}" />
+ <property name="username" value="${jdbc.username}" />
+ <property name="password" value="${jdbc.password}" />
+ <!-- relevant for single connection datasource and sqlite -->
+ <!-- <property name="suppressClose"> <value>true</value> </property> -->
+ <!--<property name="initialSize" value="2"/> -->
+ <property name="maxTotal" value="4" />
+ <property name="maxIdle" value="2" />
+ <property name="minIdle" value="1" />
+ <property name="maxWaitMillis" value="15000" />
+ <!--<property name="poolPreparedStatements" value="true"/> -->
+ </bean>
+
+ <bean id="sqliteDataSource"
class="org.springframework.jdbc.datasource.SingleConnectionDataSource"
- lazy-init="false">
- <property name="driverClassName" value="org.sqlite.JDBC" />
- <property name="url" value="jdbc:sqlite::memory:" />
- <!--<property name="initialSize" value="1" /> -->
- <!--<property name="maxTotal" value="1" /> -->
- <!--<property name="maxIdle" value="1" /> -->
- <!--<property name="username" value="${jdbc.username}"/> -->
- <!--<property name="password" value="${jdbc.password}"/> -->
+ lazy-init="true">
+ <property name="driverClassName" value="${jdbc.driverClassName}" />
+ <property name="url" value="${jdbc.url}" />
+ <property name="username" value="${jdbc.username}" />
+ <property name="password" value="${jdbc.password}" />
<!-- relevant for single connection datasource and sqlite -->
<property name="suppressClose">
<value>true</value>
@@ -76,9 +90,9 @@
<!-- to configure database for sqlite, mysql, etc. migrations -->
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="migrate">
- <property name="baselineOnMigrate" value="false" />
+ <property name="baselineOnMigrate" value="true" />
<property name="locations" value="classpath:db.sqlite" />
- <property name="dataSource" ref="dataSource" />
+ <property name="dataSource" ref="sqliteDataSource" />
</bean>
<bean id="kustvakt_db" class="de.ids_mannheim.korap.handlers.JDBCClient">
@@ -126,6 +140,11 @@
<bean id="resourceDao" class="de.ids_mannheim.korap.dao.ResourceDao"/>
<!-- <bean id="annotationDao" class="de.ids_mannheim.korap.dao.AnnotationDao"/> -->
+ <!-- Krill -->
+ <bean id="search_krill" class="de.ids_mannheim.korap.web.SearchKrill">
+ <constructor-arg value="${krill.indexDir}"/>
+ </bean>
+
<bean id="kustvakt_auditing" class="de.ids_mannheim.korap.handlers.JDBCAuditing">
<constructor-arg ref="kustvakt_db" />
</bean>
diff --git a/src/test/resources/test-jdbc.properties b/src/test/resources/test-jdbc.properties
new file mode 100644
index 0000000..1865408
--- /dev/null
+++ b/src/test/resources/test-jdbc.properties
@@ -0,0 +1,10 @@
+#-------------------------------------------------------------------------------
+# Sqlite Settings
+
+jdbc.database=sqlite
+jdbc.driverClassName=org.sqlite.JDBC
+jdbc.url=jdbc:sqlite:db.sqlite
+# jdbc.url=jdbc:sqlite:kustvakt_init_test.sqlite
+jdbc.username=pc
+jdbc.password=pc
+jdbc.schemaPath=classpath:db.sqlite