package net.codjo.control.server.plugin; import net.codjo.agent.MessageTemplate; import net.codjo.imports.common.message.ImportJobAuditArgument; import net.codjo.imports.common.message.ImportJobRequest; import net.codjo.workflow.common.message.Arguments; import net.codjo.workflow.common.message.JobAudit; import net.codjo.workflow.common.message.JobRequest; import net.codjo.workflow.common.message.ScheduleContract; import net.codjo.workflow.server.api.ScheduleAgentTestCase; import net.codjo.control.common.message.ControlJobRequest; import net.codjo.control.common.message.SourceOfData; /** * Classe de test de {@link AfterImportScheduleAgent}. */ public class AfterImportScheduleAgentTest extends ScheduleAgentTestCase { public static final String CONTROL = ControlServerPlugin.CONTROL_REQUEST_TYPE; public static final String QUARANTINE_TRANSFER = ControlServerPlugin.QUARANTINE_TRANSFER_TYPE; public void test_nominal() throws Exception { record().startScheduleAgent(new AfterImportScheduleAgent()); record().startTester("schedule-leader-mock") .sendMessage(createScheduleContractMessage(createImportContract("AP_Q"))) .then() .play(receiveAndAcceptProposal()) .then() .play(receiveResult(CONTROL, matchControlQuarantine("AP_Q:"+ SourceOfData.IMPORT))); executeStory(); } public void test_refuseContract_notAnImport() throws Exception { record().startScheduleAgent(new AfterImportScheduleAgent()); JobRequest jobRequest = new JobRequest("notImport"); jobRequest.setInitiatorLogin("user_tu"); record().startTester("schedule-leader-mock") .sendMessage(createScheduleContractMessage(createContract(jobRequest))) .then() .play(receiveRefuseContract()); executeStory(); } public void test_notUnderstoodContract_badFormattedImport() throws Exception { record().startScheduleAgent(new AfterImportScheduleAgent()); ScheduleContract badFormattedContract = createImportContract("AP_Q"); badFormattedContract.getPostAudit().setArguments(null); record().startTester("schedule-leader-mock") .sendMessage(createScheduleContractMessage(badFormattedContract)) .then() .play(receiveNotUnderstoodContract()); executeStory(); } private ScheduleContract createImportContract(String quarantine) { JobAudit postAudit = new JobAudit(); postAudit.setArguments(new Arguments(ImportJobAuditArgument.FILLED_TABLE, quarantine)); JobRequest jobRequest = new ImportJobRequest().toRequest(); jobRequest.setInitiatorLogin("user_tu"); return new ScheduleContract(jobRequest, postAudit); } private MessageTemplate matchControlQuarantine(String expected) { return match(new AssertJobRequest("quarantine", expected) { @Override protected String extractActual(JobRequest request) { ControlJobRequest jobRequest = new ControlJobRequest(request); return jobRequest.getQuarantineTable()+":"+jobRequest.getPath(); } }); } }