/* * Copyright 2015 herd contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.finra.herd.rest; import java.util.List; import org.junit.Test; import org.finra.herd.model.api.xml.BusinessObjectDataKey; import org.finra.herd.model.api.xml.BusinessObjectDataStatusInformation; import org.finra.herd.model.api.xml.BusinessObjectDataStatusUpdateRequest; import org.finra.herd.model.api.xml.BusinessObjectDataStatusUpdateResponse; import org.finra.herd.model.jpa.BusinessObjectDataEntity; /** * This class tests various functionality within the business object data status REST controller. */ public class BusinessObjectDataStatusRestControllerTest extends AbstractRestTest { @Test public void testGetBusinessObjectDataStatus() { // Create and persist database entities required for testing. businessObjectDataDaoTestHelper .createBusinessObjectDataEntity(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, SUBPARTITION_VALUES, DATA_VERSION, true, BDATA_STATUS); // Get the business object data status information. BusinessObjectDataStatusInformation resultBusinessObjectDataStatusInformation = businessObjectDataStatusRestController .getBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, PARTITION_KEY, PARTITION_VALUE, getDelimitedFieldValues(SUBPARTITION_VALUES), FORMAT_VERSION, DATA_VERSION); // Validate the returned object. businessObjectDataServiceTestHelper.validateBusinessObjectDataStatusInformation( new BusinessObjectDataKey(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, SUBPARTITION_VALUES, DATA_VERSION), BDATA_STATUS, resultBusinessObjectDataStatusInformation); } @Test public void testGetBusinessObjectDataStatusMissingOptionalParameters() { // Test if we can get status for the business object data without specifying optional parameters // and with any allowed number of subpartition values (from 0 to MAX_SUBPARTITIONS). for (int i = 0; i <= BusinessObjectDataEntity.MAX_SUBPARTITIONS; i++) { // Build a list of subpartition values. List<String> subPartitionValues = SUBPARTITION_VALUES.subList(0, i); // Create and persist a business object data entity. businessObjectDataDaoTestHelper .createBusinessObjectDataEntity(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues, DATA_VERSION, true, BDATA_STATUS); // Get the business object data status information without specifying optional parameters. BusinessObjectDataStatusInformation resultBusinessObjectDataStatusInformation = businessObjectDataStatusRestController .getBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, BLANK_TEXT, PARTITION_VALUE, getDelimitedFieldValues(subPartitionValues), null, null); // Validate the returned object. businessObjectDataServiceTestHelper.validateBusinessObjectDataStatusInformation( new BusinessObjectDataKey(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues, DATA_VERSION), BDATA_STATUS, resultBusinessObjectDataStatusInformation); } } @Test public void testGetBusinessObjectDataStatusMissingOptionalParametersPassedAsNulls() { // Create and persist a business object data entity without sub-partition values. businessObjectDataDaoTestHelper .createBusinessObjectDataEntity(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, NO_SUBPARTITION_VALUES, DATA_VERSION, true, BDATA_STATUS); // Get the business object data status by passing null values for the partition key and the list of sub-partition values. BusinessObjectDataStatusInformation resultBusinessObjectDataStatusInformation = businessObjectDataStatusRestController .getBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, null, PARTITION_VALUE, null, null, null); // Validate the returned object. businessObjectDataServiceTestHelper.validateBusinessObjectDataStatusInformation( new BusinessObjectDataKey(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, NO_SUBPARTITION_VALUES, DATA_VERSION), BDATA_STATUS, resultBusinessObjectDataStatusInformation); } @Test public void testUpdateBusinessObjectDataStatus() { // Create and persist relative test entities. businessObjectDataDaoTestHelper .createBusinessObjectDataEntity(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, SUBPARTITION_VALUES, DATA_VERSION, true, BDATA_STATUS); businessObjectDataStatusDaoTestHelper.createBusinessObjectDataStatusEntity(BDATA_STATUS_2); // Update the business object data status. BusinessObjectDataStatusUpdateResponse response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, SUBPARTITION_VALUES.get(0), SUBPARTITION_VALUES.get(1), SUBPARTITION_VALUES.get(2), SUBPARTITION_VALUES.get(3), DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); // Validate the returned object. businessObjectDataServiceTestHelper.validateBusinessObjectDataStatusUpdateResponse( new BusinessObjectDataKey(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, SUBPARTITION_VALUES, DATA_VERSION), BDATA_STATUS_2, BDATA_STATUS, response); } @Test public void testUpdateBusinessObjectDataStatusMissingOptionalParameters() { // Create and persist a business object data status entity. businessObjectDataStatusDaoTestHelper.createBusinessObjectDataStatusEntity(BDATA_STATUS_2); // Test if we can retrieve an attribute for the business object data with any allowed number of subpartition values (from 0 to MAX_SUBPARTITIONS). for (int i = 0; i <= BusinessObjectDataEntity.MAX_SUBPARTITIONS; i++) { // Build a list of subpartition values. List<String> subPartitionValues = SUBPARTITION_VALUES.subList(0, i); // Create and persist a business object data entity. businessObjectDataDaoTestHelper .createBusinessObjectDataEntity(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues, DATA_VERSION, true, BDATA_STATUS); // Update the business object data status using the relative endpoint. BusinessObjectDataStatusUpdateResponse response = null; switch (i) { case 0: response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); break; case 1: response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues.get(0), DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); break; case 2: response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues.get(0), subPartitionValues.get(1), DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); break; case 3: response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues.get(0), subPartitionValues.get(1), subPartitionValues.get(2), DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); break; case 4: response = businessObjectDataStatusRestController .updateBusinessObjectDataStatus(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues.get(0), subPartitionValues.get(1), subPartitionValues.get(2), subPartitionValues.get(3), DATA_VERSION, new BusinessObjectDataStatusUpdateRequest(BDATA_STATUS_2)); break; } // Validate the returned object. businessObjectDataServiceTestHelper.validateBusinessObjectDataStatusUpdateResponse( new BusinessObjectDataKey(NAMESPACE, BDEF_NAME, FORMAT_USAGE_CODE, FORMAT_FILE_TYPE_CODE, FORMAT_VERSION, PARTITION_VALUE, subPartitionValues, DATA_VERSION), BDATA_STATUS_2, BDATA_STATUS, response); } } }