package fr.gouv.vitam.worker.core.handler; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Test; import fr.gouv.vitam.common.guid.GUID; import fr.gouv.vitam.common.guid.GUIDFactory; import fr.gouv.vitam.common.model.BusinessObjectType; import fr.gouv.vitam.common.model.ItemStatus; import fr.gouv.vitam.common.model.StatusCode; import fr.gouv.vitam.processing.common.model.IOParameter; import fr.gouv.vitam.processing.common.model.ProcessingUri; import fr.gouv.vitam.processing.common.model.UriPrefix; import fr.gouv.vitam.processing.common.parameter.WorkerParameterName; import fr.gouv.vitam.processing.common.parameter.WorkerParameters; import fr.gouv.vitam.processing.common.parameter.WorkerParametersFactory; import fr.gouv.vitam.worker.core.impl.HandlerIOImpl; public class CommitRollBackLifeCycleActionHandlerTest { CommitLifeCycleActionHandler commitUnitHandler = new CommitLifeCycleUnitActionHandler(); CommitLifeCycleActionHandler commitObjectGroupHandler = new CommitLifeCycleObjectGroupActionHandler(); RollBackActionHandler rollBackHandler = new RollBackActionHandler(); private HandlerIOImpl commitAction; private HandlerIOImpl rollBackAction; private static final String WORKSPACE_URL = "http://localhost:8083"; private static final String METADATA_URL = "http://localhost:8084"; private static final String COMMIT_STEP = "COMMIT_STEP"; @Test public void givenOperationIdObjectIdThenReturnCommitOk() { GUID containerName = GUIDFactory.newGUID(); String unit = "unit_1.xml"; String object = "object_group_1.json"; commitAction = new HandlerIOImpl(containerName.getId(), "workerId"); WorkerParameters params = WorkerParametersFactory.newWorkerParameters() .setUrlWorkspace(WORKSPACE_URL) .setUrlMetadata(METADATA_URL) .setObjectName(unit) .setCurrentStep(COMMIT_STEP) .setContainerName(containerName.getId()); // Commit a Unit lifeCycle ItemStatus response = commitUnitHandler.execute(params, commitAction); assertEquals(response.getGlobalStatus(), StatusCode.OK); // Commit an objectGroup lifeCycle params.setObjectName(object); response = commitObjectGroupHandler.execute(params, commitAction); assertEquals(response.getGlobalStatus(), StatusCode.OK); } @Test public void givenOperationIdObjectIdThenReturnRollBackOk() { GUID containerName = GUIDFactory.newGUID(); String unit = "unit_1.xml"; commitAction = new HandlerIOImpl(containerName.getId(), "workerId"); WorkerParameters params = WorkerParametersFactory.newWorkerParameters() .setUrlWorkspace(WORKSPACE_URL) .setUrlMetadata(METADATA_URL) .setObjectName(unit) .setCurrentStep(COMMIT_STEP) .setContainerName(containerName.getId()); // Commit a Unit lifeCycle List<IOParameter> in = new ArrayList<>(); in.add(new IOParameter().setUri(new ProcessingUri(UriPrefix.VALUE, BusinessObjectType.UNIT.toString()))); commitAction.addInIOParameters(in); ItemStatus response = commitUnitHandler.execute(params, commitAction); assertEquals(response.getGlobalStatus(), StatusCode.OK); // RollBack with a successful workFlow params.putParameterValue(WorkerParameterName.workflowStatusKo, StatusCode.OK.toString()); rollBackAction = new HandlerIOImpl(containerName.getId(), "workerId"); response = rollBackHandler.execute(params, rollBackAction); assertEquals(response.getGlobalStatus(), StatusCode.OK); // RollBack with a failed workFlow params.putParameterValue(WorkerParameterName.workflowStatusKo, StatusCode.FATAL.toString()); rollBackAction = new HandlerIOImpl(containerName.getId(), "workerId"); response = rollBackHandler.execute(params, rollBackAction); assertEquals(response.getGlobalStatus(), StatusCode.OK); } }