diff --git a/pom.xml b/pom.xml index cac8565..07b6587 100644 --- a/pom.xml +++ b/pom.xml @@ -44,19 +44,19 @@ org.gcube.accounting accounting-lib - [2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) + [2.1.0-SNAPSHOT, 3.0.0-SNAPSHOT) test org.gcube.core common-encryption - [1.0.2-SNAPSHOT, 2.0.0-SNAPSHOT) + [1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT) test org.gcube.resources registry-publisher - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + [1.0.0-SNAPSHOT,3.0.0-SNAPSHOT) test diff --git a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java index 38a7965..402678d 100644 --- a/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java +++ b/src/test/java/org/gcube/accounting/persistence/PersistenceCouchBaseTest.java @@ -4,22 +4,22 @@ package org.gcube.accounting.persistence; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Calendar; -import java.util.List; import java.util.concurrent.TimeUnit; +import org.gcube.accounting.datamodel.BasicUsageRecord; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.resources.gcore.Resource; import org.gcube.common.resources.gcore.Resources; import org.gcube.common.resources.gcore.ServiceEndpoint; -import org.gcube.common.scope.api.ScopeProvider; import org.gcube.documentstore.persistence.PersistenceBackend; import org.gcube.documentstore.persistence.PersistenceBackendFactory; import org.gcube.documentstore.persistence.PersistenceCouchBase; +import org.gcube.informationsystem.publisher.RegistryPublisher; import org.gcube.informationsystem.publisher.RegistryPublisherFactory; -import org.gcube.informationsystem.publisher.ScopedPublisher; -import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,10 +35,20 @@ public class PersistenceCouchBaseTest { public static final long timeout = 5000; public static final TimeUnit timeUnit = TimeUnit.MILLISECONDS; + + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(TestUtility.TOKEN); + } + + @After + public void after(){ + SecurityTokenProvider.instance.reset(); + } + public static PersistenceBackend getPersistence(){ - ScopeProvider.instance.set("/gcube/devNext"); PersistenceBackendFactory.setFallbackLocation(null); - return PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + return PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); } @Test @@ -47,34 +57,38 @@ public class PersistenceCouchBaseTest { Assert.assertTrue(persistence instanceof PersistenceCouchBase); } - private static void publishScopedResource(Resource resource, List scopes) throws Exception { + private static void publishResource(Resource resource) throws Exception { StringWriter stringWriter = new StringWriter(); Resources.marshal(resource, stringWriter); - ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher(); + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + try { - logger.debug("Trying to publish to {}:\n{}", scopes, stringWriter); - scopedPublisher.create(resource, scopes); + logger.debug("Trying to publish to {}:\n{}", BasicUsageRecord.getScopeFromToken(), stringWriter); + registryPublisher.create(resource); } catch (Exception e) { logger.error("The resource was not published", e); throw e; } } - private static void unPublishScopedResource(Resource resource, List scopes) throws RegistryNotFoundException, Exception { - ScopedPublisher scopedPublisher = RegistryPublisherFactory.scopedPublisher(); - String id = resource.id(); - logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, scopes); - scopedPublisher.remove(resource, scopes); + private static void unPublishResource(Resource resource) throws Exception { + //StringWriter stringWriter = new StringWriter(); + //Resources.marshal(resource, stringWriter); + + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + + String id = resource.id(); + logger.debug("Trying to remove {} with ID {} from {}", + resource.getClass().getSimpleName(), id, + BasicUsageRecord.getScopeFromToken()); + + registryPublisher.remove(resource); + logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id); } public void testScopeRecheck() throws Exception { - final String vreScopeToUse = "/gcube/devsec/LucioVRE"; - final String parentVREScopeToUse = "/gcube/devsec"; - - ScopeProvider.instance.set(vreScopeToUse); - ServiceEndpoint serviceEndpoint = null; try { AccountingPersistenceConfiguration persitenceConfiguration = new AccountingPersistenceConfiguration(PersistenceCouchBase.class); @@ -82,16 +96,14 @@ public class PersistenceCouchBaseTest { AccountingPersistenceConfiguration.SERVICE_ENDPOINT_CATEGORY, AccountingPersistenceConfiguration.SERVICE_ENDPOINT_NAME, PersistenceCouchBase.class); - List scopes = new ArrayList(); - scopes.add(ScopeProvider.instance.get()); - unPublishScopedResource(serviceEndpoint, scopes); + unPublishResource(serviceEndpoint); }catch(IndexOutOfBoundsException e){ - ScopeProvider.instance.set(parentVREScopeToUse); + SecurityTokenProvider.instance.set(TestUtility.PARENT_TOKEN); AccountingPersistenceConfiguration persitenceConfiguration = new AccountingPersistenceConfiguration(PersistenceCouchBase.class); serviceEndpoint = persitenceConfiguration.getServiceEndpoint( AccountingPersistenceConfiguration.SERVICE_ENDPOINT_CATEGORY, AccountingPersistenceConfiguration.SERVICE_ENDPOINT_NAME, PersistenceCouchBase.class); - ScopeProvider.instance.set(vreScopeToUse); + SecurityTokenProvider.instance.set(TestUtility.TOKEN); } long startTime = Calendar.getInstance().getTimeInMillis(); @@ -101,12 +113,10 @@ public class PersistenceCouchBaseTest { } logger.debug("Going to check First Time"); - PersistenceBackend first = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend first = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); logger.debug("First {} : {}", PersistenceBackend.class.getSimpleName(), first); - List scopes = new ArrayList(); - scopes.add(ScopeProvider.instance.get()); - publishScopedResource(serviceEndpoint, scopes); + publishResource(serviceEndpoint); startTime = Calendar.getInstance().getTimeInMillis(); endTime = startTime; @@ -115,7 +125,7 @@ public class PersistenceCouchBaseTest { } logger.debug("Going to check Second Time"); - PersistenceBackend second = PersistenceBackendFactory.getPersistenceBackend(ScopeProvider.instance.get()); + PersistenceBackend second = PersistenceBackendFactory.getPersistenceBackend(BasicUsageRecord.getScopeFromToken()); logger.debug("Second {} : {}", PersistenceBackend.class.getSimpleName(), second); Assert.assertNotEquals(first, second); diff --git a/src/test/java/org/gcube/accounting/persistence/TestUtility.java b/src/test/java/org/gcube/accounting/persistence/TestUtility.java new file mode 100644 index 0000000..6f5fbee --- /dev/null +++ b/src/test/java/org/gcube/accounting/persistence/TestUtility.java @@ -0,0 +1,86 @@ +/** + * + */ +package org.gcube.accounting.persistence; + +import java.io.StringWriter; + +import org.gcube.common.authorization.client.Constants; +import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.resources.gcore.Resource; +import org.gcube.common.resources.gcore.Resources; +import org.gcube.informationsystem.publisher.RegistryPublisher; +import org.gcube.informationsystem.publisher.RegistryPublisherFactory; +import org.gcube.informationsystem.publisher.exception.RegistryNotFoundException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class TestUtility { + + public static final String TOKEN = ""; + public static final String PARENT_TOKEN = ""; + + /** + * Logger + */ + private static Logger logger = LoggerFactory.getLogger(TestUtility.class); + + public static String getScopeFromToken(){ + String token = SecurityTokenProvider.instance.get(); + AuthorizationEntry authorizationEntry; + try { + authorizationEntry = Constants.authorizationService().get(token); + } catch (Exception e) { + throw new RuntimeException(e); + } + String scope = authorizationEntry.getContext(); + return scope; + } + + /** + * Publish the provided resource on current scope + * @param resource to be published + * @throws RegistryNotFoundException if the Registry is not found so the + * resource has not be published + */ + public static void publishResource(Resource resource) throws Exception { + StringWriter stringWriter = new StringWriter(); + Resources.marshal(resource, stringWriter); + + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + + try { + logger.debug("Trying to publish to {}:\n{}", getScopeFromToken(), stringWriter); + registryPublisher.create(resource); + } catch (Exception e) { + logger.error("The resource was not published", e); + throw e; + } + } + + /** + * Remove the resource from IS from curretn scope + * @param resource to be unpublished + * @throws RegistryNotFoundException if the Registry is not found so the + * resource has not be published + */ + public static void unPublishResource(Resource resource) throws Exception { + //StringWriter stringWriter = new StringWriter(); + //Resources.marshal(resource, stringWriter); + + RegistryPublisher registryPublisher = RegistryPublisherFactory.create(); + + String id = resource.id(); + logger.debug("Trying to remove {} with ID {} from {}", resource.getClass().getSimpleName(), id, getScopeFromToken()); + + registryPublisher.remove(resource); + + logger.debug("{} with ID {} removed successfully", resource.getClass().getSimpleName(), id); + } + +} diff --git a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java index 396ecf1..78f7446 100644 --- a/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java +++ b/src/test/java/org/gcube/documentstore/persistence/PersistenceCouchBaseTest.java @@ -6,11 +6,12 @@ package org.gcube.documentstore.persistence; import java.net.URL; import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; -import org.gcube.common.scope.api.ScopeProvider; -import org.gcube.documentstore.persistence.PersistenceBackendConfiguration; -import org.gcube.documentstore.persistence.PersistenceCouchBase; +import org.gcube.accounting.persistence.TestUtility; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.documentstore.records.Record; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,9 +26,18 @@ public class PersistenceCouchBaseTest { private static final Logger logger = LoggerFactory.getLogger(PersistenceCouchBaseTest.class); + @Before + public void before() throws Exception{ + SecurityTokenProvider.instance.set(TestUtility.TOKEN); + } + + @After + public void after(){ + SecurityTokenProvider.instance.reset(); + } + @Test public void testJsonNodeUsageRecordConversions() throws Exception { - ScopeProvider.instance.set("/gcube/devNext"); Record record = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); logger.debug("UsageRecord : {}", record.toString()); JsonNode node = PersistenceCouchBase.usageRecordToJsonNode(record); @@ -39,7 +49,6 @@ public class PersistenceCouchBaseTest { @Test public void testJsonNodeUsageRecordConversionsWithNestedMap() throws Exception { - ScopeProvider.instance.set("/gcube/devNext"); Record record = TestUsageRecord.createTestTaskUsageRecordAutomaticScope(); logger.debug("UsageRecord : {}", record.toString()); JsonNode node = PersistenceCouchBase.usageRecordToJsonNode(record); @@ -49,7 +58,6 @@ public class PersistenceCouchBaseTest { Assert.assertEquals(0, r.compareTo(record)); } - public void testProxyWithTestConfiguration() throws Exception{ // Production-Preproduction Nodes URL url = new URL("http://pc-frosini.isti.cnr.it"); @@ -63,10 +71,8 @@ public class PersistenceCouchBaseTest { PersistenceCouchBase couchBase = new PersistenceCouchBase(); couchBase.prepareConnection(persitenceConfiguration); - ScopeProvider.instance.set("/gcube/devNext"); Record record = TestUsageRecord.createTestServiceUsageRecordAutomaticScope(); couchBase.reallyAccount(record); - } } \ No newline at end of file