gcube-cms-suite/geoportal-service/src/test/java/org/gcube/application/geoportal/service/UCDTests.java

57 lines
1.9 KiB
Java

package org.gcube.application.geoportal.service;
import lombok.extern.slf4j.Slf4j;
import org.gcube.application.cms.serialization.Serialization;
import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import org.junit.Before;
import org.junit.Test;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicLong;
import static org.junit.Assume.assumeTrue;
@Slf4j
public class UCDTests extends BasicServiceTestUnit{
@Before
public void setContext(){
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
TokenSetter.set(GCubeTest.getContext());
}
protected WebTarget baseTarget(){
return super.target(InterfaceConstants.Methods.UCD);
}
private Iterator<UseCaseDescriptor> query(QueryRequest request) throws Exception {
String json = check(baseTarget().path(InterfaceConstants.Methods.QUERY_PATH).
request(MediaType.APPLICATION_JSON).post(Entity.entity(request,MediaType.APPLICATION_JSON)),
String.class);
try{
return Serialization.readCollection(json, UseCaseDescriptor.class);
}catch(Throwable t){
log.error("Unable to query UCD with {} ",request,t);
throw new Exception("Unable to parse collection. Check projection settings.",t);
}
}
@Test
public void queryAll() throws Exception {
QueryRequest request=new QueryRequest();
AtomicLong l = new AtomicLong();
query(request).forEachRemaining(u->l.incrementAndGet());
assumeTrue(l.get()>0);
}
}