You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by su...@apache.org on 2012/08/31 13:12:10 UTC
svn commit: r1379419 - in
/incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests:
./ src/test/java/org/apache/stanbol/contenthub/it/
Author: suat
Date: Fri Aug 31 11:12:09 2012
New Revision: 1379419
URL: http://svn.apache.org/viewvc?rev=1379419&view=rev
Log:
STANBOL-498,STANBOL-499: Integration tests store and indexing part
Added:
incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/SemanticIndexResourceTest.java
incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/StoreResourceTest.java
Modified:
incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/pom.xml
Modified: incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/pom.xml
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/pom.xml?rev=1379419&r1=1379418&r2=1379419&view=diff
==============================================================================
--- incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/pom.xml (original)
+++ incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/pom.xml Fri Aug 31 11:12:09 2012
@@ -192,6 +192,14 @@
<artifactId>jersey-core</artifactId>
</dependency>
<dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.jersey.contribs</groupId>
+ <artifactId>jersey-multipart</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
</dependency>
Added: incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/SemanticIndexResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/SemanticIndexResourceTest.java?rev=1379419&view=auto
==============================================================================
--- incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/SemanticIndexResourceTest.java (added)
+++ incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/SemanticIndexResourceTest.java Fri Aug 31 11:12:09 2012
@@ -0,0 +1,65 @@
+package org.apache.stanbol.contenthub.it;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import javax.ws.rs.core.MediaType;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.stanbol.commons.testing.http.RequestExecutor;
+import org.apache.stanbol.commons.testing.stanbol.StanbolTestBase;
+import org.codehaus.jettison.json.JSONException;
+import org.codehaus.jettison.json.JSONObject;
+import org.junit.Test;
+
+import com.sun.jersey.api.client.ClientResponse.Status;
+
+public class SemanticIndexResourceTest extends StanbolTestBase {
+
+ private static final String defaultPath = "/contenthub/index";
+
+ @Test
+ public void testSubmitProgram() throws ClientProtocolException, UnsupportedEncodingException, IOException {
+ RequestExecutor test;
+
+ // create an index
+ String name = "contenthub_index_ldpath_test_program";
+ String program = "@prefix dbp-ont : <http://dbpedia.org/ontology/>; city = dbp-ont:city / rdfs:label :: xsd:string; country = dbp-ont:country / rdfs:label :: xsd:string; ";
+ test = executor.execute(builder.buildPostRequest(defaultPath + "/ldpath")
+ .withFormContent("name", name, "description", "test_desc", "program", program)
+ .withHeader("Content-Type", MediaType.APPLICATION_FORM_URLENCODED));
+ test.assertStatus(Status.OK.getStatusCode());
+ String pid = test.getContent();
+
+ // get the created index
+ test = executor.execute(builder.buildGetRequest(defaultPath + "?name=" + name).withHeader("Accept",
+ MediaType.APPLICATION_JSON));
+ test.assertContentType(MediaType.APPLICATION_JSON);
+ try {
+ JSONObject content = new JSONObject(test.getContent());
+ content.get(name);
+ } catch (JSONException e) {
+ assertTrue("Failed to get submitted index.", false);
+ }
+
+ // delete the created index
+ String path = builder.buildUrl(defaultPath + "/ldpath/" + pid);
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // try to get the removed index
+ test = executor.execute(builder.buildGetRequest(defaultPath).withHeader("Accept",
+ MediaType.APPLICATION_JSON));
+ test.assertContentType(MediaType.APPLICATION_JSON);
+ try {
+ JSONObject content = new JSONObject(test.getContent());
+ content.get(name);
+ assertTrue("Failed to remove index properly", false);
+ } catch (JSONException e) {
+ // content.get(name) must throw an exception to pass test.
+ }
+ }
+}
\ No newline at end of file
Added: incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/StoreResourceTest.java
URL: http://svn.apache.org/viewvc/incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/StoreResourceTest.java?rev=1379419&view=auto
==============================================================================
--- incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/StoreResourceTest.java (added)
+++ incubator/stanbol/branches/contenthub-two-layered-structure/integration-tests/src/test/java/org/apache/stanbol/contenthub/it/StoreResourceTest.java Fri Aug 31 11:12:09 2012
@@ -0,0 +1,231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.stanbol.contenthub.it;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response.Status;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.methods.HttpDelete;
+import org.apache.stanbol.commons.testing.http.RequestExecutor;
+import org.apache.stanbol.commons.testing.stanbol.StanbolTestBase;
+import org.junit.Test;
+
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.multipart.FormDataMultiPart;
+
+/**
+ * Tests of the Store RESTful service of the Contenthub.
+ *
+ * @author meric
+ *
+ */
+public class StoreResourceTest extends StanbolTestBase {
+
+ private final String defaultPath = "/contenthub/store/";
+
+ @Test
+ public void testGetView() throws ClientProtocolException, IOException {
+ RequestExecutor test = executor.execute(builder.buildGetRequest(defaultPath));
+ test.assertContentType(MediaType.TEXT_HTML);
+ test.assertContentContains("</div>");
+ }
+
+ @Test
+ public void testGetsWithNonExistUri() throws ClientProtocolException, IOException {
+ RequestExecutor test;
+
+ String uri = "non_exist_test_uri";
+ // GetRawContent
+ test = executor.execute(builder.buildGetRequest(defaultPath + "raw/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // GetContentItemMetaData
+ test = executor.execute(builder.buildGetRequest(defaultPath + "metadata/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // DownloadContentItem Raw
+ test = executor.execute(builder.buildGetRequest(defaultPath + "raw/" + uri).withHeader("Accept",
+ MediaType.APPLICATION_OCTET_STREAM));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // DownloadContentItem Metadata
+ test = executor.execute(builder.buildGetRequest(defaultPath + "metadata/" + uri).withHeader("Accept",
+ MediaType.APPLICATION_OCTET_STREAM));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // GetContent
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // GetContentItemView
+ test = executor.execute(builder.buildGetRequest(defaultPath + "page/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ // DeleteContentItem
+ String path = builder.buildUrl(defaultPath + uri);
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ }
+
+ @Test
+ public void testCRUD() throws ClientProtocolException, IOException {
+ RequestExecutor test;
+ final String content = "Paris is the capital city of France.";
+ final String title = "Paris";
+ final String uri = "urn:content-item-sha1-1de18ff0566f179c31aea7ff28de6bbf574ee0da";
+
+ // CreateContentItemFromForm
+ test = executor.execute(builder.buildPostRequest(defaultPath)
+ .withHeader("Content-Type", MediaType.APPLICATION_FORM_URLENCODED)
+ .withFormContent("content", content, "title", title));
+ test.assertStatus(Status.OK.getStatusCode());
+ test.assertContentContains(content);
+
+ // GetRawContent
+ test = executor.execute(builder.buildGetRequest(defaultPath + "raw/" + uri));
+ test.assertStatus(Status.OK.getStatusCode());
+ assertEquals(content, test.getContent());
+
+ // GetContentItemMetaData
+ test = executor.execute(builder.buildGetRequest(defaultPath + "metadata/" + uri));
+ test.assertStatus(Status.OK.getStatusCode());
+ test.assertContentType(MediaType.TEXT_PLAIN);
+ test.assertContentContains("<rdf:RDF");
+
+ // DownloadContentItem Raw
+ test = executor.execute(builder.buildGetRequest(defaultPath + "raw/" + uri).withHeader("Accept",
+ MediaType.APPLICATION_OCTET_STREAM));
+ test.assertStatus(Status.OK.getStatusCode());
+ test.assertContentType(MediaType.TEXT_PLAIN);
+ assertEquals(content, test.getContent());
+
+ // DownloadContentItem Metadata in RDF/XML format
+ test = executor.execute(builder.buildGetRequest(
+ defaultPath + "metadata/" + uri + "?format=application%2Frdf%2Bxml").withHeader("Accept",
+ MediaType.APPLICATION_OCTET_STREAM));
+ test.assertStatus(Status.OK.getStatusCode());
+ test.assertContentType(MediaType.TEXT_PLAIN);
+ test.assertContentContains("<rdf:RDF");
+
+ // DownloadContentItem Metadata in N-Triples
+ test = executor.execute(builder.buildGetRequest(
+ defaultPath + "metadata/" + uri + "?format=text%2Frdf%2Bnt").withHeader("Accept",
+ MediaType.APPLICATION_OCTET_STREAM));
+ test.assertStatus(Status.OK.getStatusCode());
+ test.assertContentType(MediaType.TEXT_PLAIN);
+ test.assertContentContains("<" + uri + ">");
+
+ // DeleteContentItem
+ String path = builder.buildUrl(defaultPath + uri);
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // GetContent with deleted item uri
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+ }
+
+ @Test
+ public void testCreate() throws ClientProtocolException, UnsupportedEncodingException, IOException {
+ RequestExecutor test;
+ final String content = "Paris is the capital city of France.";
+ final String uri = "urn:content-item-sha1-1de18ff0566f179c31aea7ff28de6bbf574ee0da";
+ // create ContentItem
+ test = executor.execute(builder.buildPostRequest(defaultPath).withContent(content));
+ test.assertStatus(Status.CREATED.getStatusCode());
+
+ // test whether it is created
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/" + uri));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // create ContentItem with id
+ test = executor.execute(builder.buildPostRequest(defaultPath + "test_item_uri").withContent(content));
+ test.assertStatus(Status.CREATED.getStatusCode());
+
+ // test whether it is created
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/test_item_uri"));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // delete created items
+ String path = builder.buildUrl(defaultPath + uri);
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.OK.getStatusCode());
+ path = builder.buildUrl(defaultPath + "test_item_uri");
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // test whether they are deleted
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/" + uri));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/test_item_uri"));
+ test.assertStatus(Status.NOT_FOUND.getStatusCode());
+ }
+
+ @Test
+ public void testPostFile() throws IOException {
+ final String content = "I live in Istanbul.";
+ final String uri = "urn:content-item-sha1-cc34b9186ed006d9b0462adabbf290145ba6948d";
+ // create file to submit
+ String fileName = "test.file";
+ File file = new File(fileName);
+ if (file.exists()) {
+ file.delete();
+ }
+ boolean success = file.createNewFile();
+ if (success) {
+ // fill content of file
+ BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
+ bufferedWriter.write(content);
+ bufferedWriter.close();
+
+ // createContentItemFromForm with file
+ FormDataMultiPart part = new FormDataMultiPart().field("file", file, MediaType.TEXT_PLAIN_TYPE);
+ WebResource resource = Client.create().resource(serverBaseUrl + defaultPath);
+ ClientResponse response = resource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(
+ ClientResponse.class, part);
+ assertEquals(Status.OK.getStatusCode(), response.getStatus());
+
+ RequestExecutor test;
+
+ // test whether it is created
+ test = executor.execute(builder.buildGetRequest(defaultPath + "content/" + uri));
+ test.assertStatus(Status.OK.getStatusCode());
+
+ // delete created ContentItem and files
+ String path = builder.buildUrl(defaultPath + uri);
+ test = executor.execute(builder.buildOtherRequest(new HttpDelete(path)));
+ test.assertStatus(Status.OK.getStatusCode());
+ file.delete();
+ } else {
+ assertTrue("Failed to create file", false);
+ }
+ }
+}