/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.camel.component.bonita.api.util;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.component.bonita.api.model.FileInput;
import org.apache.camel.component.bonita.api.model.ProcessDefinitionResponse;
import org.apache.camel.component.bonita.api.model.UploadFileResponse;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@RunWith(PowerMockRunner.class)
@PrepareForTest(BonitaAPIUtil.class)
public class BonitaAPIUtilPrepareInputsTest {
@Mock
ProcessDefinitionResponse processDefinition;
private BonitaAPIUtil bonitaApiUtil;
@Before
public void setup() {
bonitaApiUtil = BonitaAPIUtil
.getInstance(new BonitaAPIConfig("hostname", "port", "username", "password"));
Mockito.when(processDefinition.getName()).thenReturn("processName");
Mockito.when(processDefinition.getVersion()).thenReturn("1.0");
Mockito.when(processDefinition.getId()).thenReturn("1");
}
@Test
public void testPrepareInputsEmpty() throws Exception {
Map<String, Serializable> rawInputs = new HashMap<String, Serializable>();
Map<String, Serializable> inputs =
bonitaApiUtil.prepareInputs(processDefinition, rawInputs);
assertEquals(inputs.size(), rawInputs.size());
}
@Test
public void testPrepareInputsNoFiles() throws Exception {
Map<String, Serializable> rawInputs = new HashMap<String, Serializable>();
rawInputs.put("myVariable", 1);
Map<String, Serializable> inputs =
bonitaApiUtil.prepareInputs(processDefinition, rawInputs);
assertEquals(rawInputs.size(), inputs.size());
}
@Test
public void testPrepareInputsOneFile() throws Exception {
Map<String, Serializable> rawInputs = new HashMap<String, Serializable>();
FileInput file = new FileInput("filename", "String".getBytes());
rawInputs.put("myVariable", 1);
rawInputs.put("filename", file);
BonitaAPIUtil bonitaApiUtilMod = Mockito.spy(bonitaApiUtil);
UploadFileResponse uploadFileResponse = new UploadFileResponse();
uploadFileResponse.setTempPath("temp");
Mockito.doReturn(uploadFileResponse).when(bonitaApiUtilMod).uploadFile(Matchers.any(),
Matchers.any());
Map<String, Serializable> inputs =
bonitaApiUtilMod.prepareInputs(processDefinition, rawInputs);
assertEquals(rawInputs.size(), inputs.size());
}
@Test
public void testPrepareInputsFileType() throws Exception {
Map<String, Serializable> rawInputs = new HashMap<String, Serializable>();
FileInput file = new FileInput("filename", "String".getBytes());
rawInputs.put("filename", file);
BonitaAPIUtil bonitaApiUtilMod = Mockito.spy(bonitaApiUtil);
UploadFileResponse uploadFileResponse = new UploadFileResponse();
uploadFileResponse.setTempPath("temp");
Mockito.doReturn(uploadFileResponse).when(bonitaApiUtilMod).uploadFile(Matchers.any(),
Matchers.any());
Map<String, Serializable> inputs =
bonitaApiUtilMod.prepareInputs(processDefinition, rawInputs);
assertTrue(Map.class.isInstance(inputs.get("filename")));
}
@Test
public void testPrepareInputsTempFilePath() throws Exception {
Map<String, Serializable> rawInputs = new HashMap<String, Serializable>();
FileInput file = new FileInput("filename", "String".getBytes());
rawInputs.put("filename", file);
BonitaAPIUtil bonitaApiUtilMod = Mockito.spy(bonitaApiUtil);
UploadFileResponse uploadFileResponse = new UploadFileResponse();
uploadFileResponse.setTempPath("temp");
Mockito.doReturn(uploadFileResponse).when(bonitaApiUtilMod).uploadFile(Matchers.any(),
Matchers.any());
Map<String, Serializable> inputs =
bonitaApiUtilMod.prepareInputs(processDefinition, rawInputs);
Map<String, Serializable> fileMap = (Map<String, Serializable>) inputs.get("filename");
assertEquals("temp", fileMap.get("tempPath"));
}
}