diff --git a/src/main/java/org/gcube/accounting/datamodel/basetypes/StorageUsageRecord.java b/src/main/java/org/gcube/accounting/datamodel/basetypes/StorageUsageRecord.java index a46028b..6437339 100644 --- a/src/main/java/org/gcube/accounting/datamodel/basetypes/StorageUsageRecord.java +++ b/src/main/java/org/gcube/accounting/datamodel/basetypes/StorageUsageRecord.java @@ -132,7 +132,7 @@ public abstract class StorageUsageRecord extends BasicUsageRecord { * @return The scope id of the storage resource */ public String getResourceScope() { - return (String) this.resourceProperties.get(RESOURCE_OWNER); + return (String) this.resourceProperties.get(RESOURCE_SCOPE); } /** diff --git a/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java new file mode 100644 index 0000000..4abac64 --- /dev/null +++ b/src/test/java/org/gcube/accounting/datamodel/usagerecords/StorageUsageRecordTest.java @@ -0,0 +1,74 @@ +/** + * + */ +package org.gcube.accounting.datamodel.usagerecords; + +import java.util.HashSet; +import java.util.Set; + +import org.gcube.accounting.datamodel.BasicUsageRecord; +import org.gcube.accounting.datamodel.BasicUsageRecordUtility; +import org.gcube.accounting.datamodel.basetypes.TestUsageRecord; +import org.gcube.accounting.exception.InvalidValueException; +import org.gcube.common.scope.api.ScopeProvider; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/ + * + */ +public class StorageUsageRecordTest { + + public static Set getExpectedRequiredFields(){ + Set expectedRequiredFields = new HashSet(); + expectedRequiredFields.add(BasicUsageRecordUtility.ID); + expectedRequiredFields.add(BasicUsageRecord.CONSUMER_ID); + expectedRequiredFields.add(BasicUsageRecord.CREATION_TIME); + expectedRequiredFields.add(BasicUsageRecordUtility.USAGE_RECORD_TYPE); + expectedRequiredFields.add(BasicUsageRecord.SCOPE); + expectedRequiredFields.add(BasicUsageRecord.OPERATION_RESULT); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.RESOURCE_OWNER); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.RESOURCE_SCOPE); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.RESOURCE_URI); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.PROVIDER_URI); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.OPERATION_TYPE); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.DATA_TYPE); + expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.StorageUsageRecord.DATA_VOLUME); + return expectedRequiredFields; + } + + @Test(expected=InvalidValueException.class) + public void scopeNotSetValidationError() throws InvalidValueException { + ScopeProvider.instance.reset(); + StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + storageUsageRecord.validate(); + } + + @Test + public void testRequiredFields() throws InvalidValueException{ + ScopeProvider.instance.set(TestUsageRecord.TEST_SCOPE); + StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + Set expectedRequiredFields = getExpectedRequiredFields(); + Set gotRequiredFields = storageUsageRecord.getRequiredFields(); + + Assert.assertTrue(expectedRequiredFields.containsAll(gotRequiredFields)); + Assert.assertTrue(gotRequiredFields.containsAll(expectedRequiredFields)); + + storageUsageRecord.validate(); + } + + @Test + public void testRequiredFieldsWithScopeSetExplicitely() throws InvalidValueException{ + StorageUsageRecord storageUsageRecord = TestUsageRecord.createTestStorageUsageRecordAutomaticScope(); + storageUsageRecord.setScope(TestUsageRecord.TEST_SCOPE); + Set expectedRequiredFields = getExpectedRequiredFields(); + + Set gotRequiredFields = storageUsageRecord.getRequiredFields(); + + Assert.assertTrue(expectedRequiredFields.containsAll(gotRequiredFields)); + Assert.assertTrue(gotRequiredFields.containsAll(expectedRequiredFields)); + + storageUsageRecord.validate(); + } +}