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

93 lines
3.3 KiB
Java

package org.gcube.application.geoportal.clients;
import org.bson.Document;
import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.application.geoportal.client.utils.Serialization;
import org.gcube.application.geoportal.common.model.document.accounting.User;
import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.DataAccessPolicy;
import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor;
import org.gcube.application.geoportal.common.rest.UseCaseDescriptorsI;
import org.gcube.application.geoportal.common.utils.tests.GCubeTest;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicLong;
import static org.gcube.application.geoportal.client.plugins.GeoportalAbstractPlugin.useCaseDescriptors;
import static org.junit.Assert.assertEquals;
import static org.junit.Assume.assumeTrue;
public class UCDTests{
public UseCaseDescriptorsI getClient(){
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
TokenSetter.set(GCubeTest.getContext());
return useCaseDescriptors().build();
}
@Test
public void query() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
UseCaseDescriptorsI client =getClient();
QueryRequest request = new QueryRequest();
// All
AtomicLong counter = new AtomicLong(0l);
client.query(request).forEachRemaining(u ->counter.incrementAndGet());
// Filter by presence of handler Id
request.setFilter(Document.parse("{\"_handlers._id\" : {\"$eq\" : \"org.gcube....geoportal-data-entry-portlet\"}}"));
System.out.println("Count : "+counter.get());
}
@Test
public void getByIdAll() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
UseCaseDescriptorsI client =getClient();
QueryRequest request = new QueryRequest();
// All
client.query(request).forEachRemaining(u -> {
try {
System.out.println("Obtained "+client.getById(u.getId()).getId());
} catch (Exception e) {
e.printStackTrace(System.err);
Assert.fail("Unable to get "+u.getId());
}
});
}
@Test
public void getById() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
UseCaseDescriptorsI client =getClient();
System.out.println(client.getById("profiledConcessioni"));
}
@Test
public void checkPolicies() throws Exception {
assumeTrue(GCubeTest.isTestInfrastructureEnabled());
UseCaseDescriptorsI client =getClient();
UseCaseDescriptor ucd = client.getById("profiledConcessioni");
System.out.println(Serialization.write(ucd));
User u = new User();
u.setRoles(new HashSet<>());
u.getRoles().addAll(Arrays.asList("Members","Data-Manager"));
DataAccessPolicy p = ucd.getMatching(u);
System.out.println("Evaluated policy : "+Serialization.write(p));
assertEquals(p.getPolicy().getRead(), DataAccessPolicy.Policy.Type.any);
assertEquals(p.getPolicy().getWrite(), DataAccessPolicy.Policy.Type.any);
}
}