AriadnePlus/dnet-ariadneplus-publisher/test/main/java/eu/dnetlib/ariadneplus/publisher/AriadnePlusPublisherTest.java

94 lines
3.2 KiB
Java

package eu.dnetlib.ariadneplus.publisher;
import java.io.IOException;
import eu.dnetlib.ariadneplus.AriadnePlusPublisherApplication;
import org.apache.commons.io.IOUtils;
import org.apache.jena.graph.Triple;
import org.apache.jena.util.iterator.ExtendedIterator;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import virtuoso.jena.driver.VirtGraph;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Created by Alessia Bardi on 29/08/2017.
* Integration test.
*
* @author Alessia Bardi
*/
@RunWith(SpringRunner.class)
@SpringBootTest(
webEnvironment = WebEnvironment.RANDOM_PORT,
classes = AriadnePlusPublisherApplication.class)
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:application-integrationtest.properties")
//Ignore test because it requires a running virtuoso server
@Ignore
public class AriadnePlusPublisherTest {
private String recordPath = "eu/dnetlib/ariadneplus/virtuoso/test_record_plain.xml";
@Value("${virtuoso.connectionstring}")
private String connectionString;
@Value("${virtuoso.usr}")
private String testUser ;
@Value("${virtuoso.pwd}")
private String testPwd ;
@Value("${virtuoso.uri.base.default}")
private String defaultURIBaseURl;
@Autowired
private MockMvc mvc;
@Test
public void publishOK() throws Exception {
String graphName = defaultURIBaseURl + "api_________::ariadneplus___::ariadneplus::topLevel/ariadneplus___::8d777f385d3dfec8815d20f7496026dc";
VirtGraph graph = new VirtGraph(graphName, connectionString, testUser, testPwd);
//ensure we have an empty graph
graph.clear();
assertEquals(0, graph.getCount());
mvc.perform(post("/publish").param("record", getString(recordPath)).param("ariadneplusTarget", "VIRTUOSO"))
.andExpect(status().isOk());
//need to wait some seconds to ensure the async call did its job
Thread.sleep(10000);
int count = graph.getCount();
System.out.println(graphName +" has "+count+" triples:");
assertNotEquals(0, graph.getCount());
final ExtendedIterator<Triple> triples = graph.find();
while(triples.hasNext()){
System.out.println(triples.next());
}
//cleanup the virtuoso graph
graph.clear();
assertEquals(0, graph.getCount());
}
private String getString(final String classpath) {
try {
final ClassPathResource resource = new ClassPathResource(classpath);
return IOUtils.toString(resource.getInputStream(), "UTF-8");
}catch(IOException e){
return null;
}
}
}