/** * */ 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.AbstractStorageUsageRecord.RESOURCE_OWNER); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.RESOURCE_SCOPE); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.RESOURCE_URI); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.PROVIDER_URI); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.OPERATION_TYPE); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.DATA_TYPE); expectedRequiredFields.add(org.gcube.accounting.datamodel.basetypes.AbstractStorageUsageRecord.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(); } }