gcube-cms-suite/sdi-plugins/src/test/java/org/gcube/application/cms/sdi/plugins/IndexerTest.java

87 lines
4.2 KiB
Java

package org.gcube.application.cms.sdi.plugins;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.bson.Document;
import org.gcube.application.cms.plugins.IndexerPluginInterface;
import org.gcube.application.cms.plugins.faults.PluginExecutionException;
import org.gcube.application.cms.plugins.reports.IndexDocumentReport;
import org.gcube.application.cms.plugins.reports.Report;
import org.gcube.application.cms.plugins.requests.BaseRequest;
import org.gcube.application.cms.plugins.requests.IndexDocumentRequest;
import org.gcube.application.cms.sdi.engine.PostgisIndexer;
import org.gcube.application.cms.sdi.model.GCubeSDILayerBuilder;
import org.gcube.application.cms.sdi.plugins.SDIIndexerPlugin;
import org.gcube.application.cms.serialization.Serialization;
import org.gcube.application.cms.tests.BasicPluginTest;
import org.gcube.application.cms.tests.TestDocuments;
import org.gcube.application.cms.tests.TestProfiles;
import org.gcube.application.geoportal.common.model.configuration.Index;
import org.gcube.application.geoportal.common.model.document.Project;
import org.gcube.application.geoportal.common.model.document.accounting.Context;
import org.gcube.application.geoportal.common.model.document.accounting.User;
import org.gcube.application.geoportal.common.model.document.filesets.GCubeSDILayer;
import org.gcube.application.geoportal.common.model.document.filesets.Materialization;
import org.gcube.application.geoportal.common.model.rest.ConfigurationException;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
import org.gcube.application.geoportal.common.utils.Files;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import org.gcube.spatial.data.geonetwork.utils.UserUtils;
import org.junit.Test;
import ucar.units.Base;
import static junit.framework.TestCase.*;
import static org.junit.Assume.assumeTrue;
public class IndexerTest extends BasicPluginTest {
@Test
public void testIndexRequest() throws PluginExecutionException, JsonProcessingException {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
Project doc= TestDocuments.documentMap.get("profiledConcessioniExample.json");
IndexDocumentRequest request=new IndexDocumentRequest(TestProfiles.profiles.get(doc.getProfileID()),
getTestUser(),getTestContext(),doc);
Document parameters = new Document();
parameters.put("workspace", "testing_workspace");
parameters.put("indexName", "unique_index"+System.currentTimeMillis());
request.setCallParameters(parameters);
IndexerPluginInterface plugin = (IndexerPluginInterface) plugins.get(SDIIndexerPlugin.DESCRIPTOR.getId());
IndexDocumentReport response = plugin.index(request);
assertTrue(response!=null);
response.validate();
System.out.println("Response is "+Serialization.write(response));
assertTrue(response.getStatus().equals(Report.Status.OK));
assertTrue(response.prepareResult().getSpatialReference()!=null);
}
@Test
public void getIndex() throws ConfigurationException, JsonProcessingException {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
IndexerPluginInterface plugin = (IndexerPluginInterface) plugins.get(SDIIndexerPlugin.DESCRIPTOR.getId());
UseCaseDescriptor descriptor=TestProfiles.profiles.get("profiledConcessioni");
Index index = plugin.getIndex(new BaseRequest(descriptor,getTestUser(),getTestContext())
.setParameter("workspace", Files.fixFilename(GCubeTest.getContext()+"_test-ws"))
.setParameter("indexName",Files.fixFilename(GCubeTest.getContext()+"test_index")));
System.out.println("Test Index Is "+index);
assertEquals(index.getType(), PostgisIndexer.INDEX_TYPE);
assertNotNull(index.get("layer"));
assertNotNull(index.get("indexName"));
GCubeSDILayer layer = Serialization.convert(index.get("layer"),GCubeSDILayer.class);
assertEquals(GCubeSDILayer.GCUBE_SDY_LAYER_TYPE,layer.getType());
for (Object pIObj : layer.getPlatformInfo()){
Document platformDoc = Serialization.asDocument(pIObj);
assertEquals(GCubeSDILayerBuilder.GS_PLATFORM,platformDoc.get(Materialization.TYPE));
}
}
}