package org.ow2.choreos.ee.bus.selector;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.anyInt;
import org.junit.Before;
import org.junit.Test;
import org.ow2.choreos.ee.bus.selector.BusNotPreparedException;
import org.ow2.choreos.ee.bus.selector.ESBDeploymentPreparer;
import org.ow2.choreos.nodes.datamodel.CloudNode;
import org.ow2.choreos.utils.SshCommandFailed;
import org.ow2.choreos.utils.SshNotConnected;
import org.ow2.choreos.utils.SshUtil;
import org.ow2.choreos.utils.SshWaiter;
import com.jcraft.jsch.JSchException;
public class ESBDeploymentPreparerTest {
private SshUtil ssh;
private SshWaiter waiter;
private SshWaiter badWaiter;
private CloudNode node;
@Before
public void setUp() throws SshNotConnected {
setUpSsh();
setUpNode();
}
private void setUpSsh() throws SshNotConnected {
ssh = mock(SshUtil.class);
waiter = mock(SshWaiter.class);
when(waiter.waitSsh(anyString(), anyString(), anyString(), anyInt())).thenReturn(ssh);
badWaiter = mock(SshWaiter.class);
when(badWaiter.waitSsh(anyString(), anyString(), anyString(), anyInt())).thenThrow(new SshNotConnected());
}
private void setUpNode() {
node = new CloudNode();
node.setId("1");
node.setIp("192.168.56.101");
node.setUser("user");
node.setPrivateKey("key.pem");
}
@Test
public void shouldExecuteCommandOnNode() throws JSchException, SshCommandFailed, BusNotPreparedException {
ESBDeploymentPreparer preparer = new ESBDeploymentPreparer(node);
preparer.sshWaiter = waiter;
preparer.prepareESBDeployment();
verify(ssh).runCommand(ESBDeploymentPreparer.COMMAND);
}
@Test(expected=BusNotPreparedException.class)
public void shouldNotExecuteCommand() throws JSchException, SshCommandFailed, BusNotPreparedException {
ESBDeploymentPreparer preparer = new ESBDeploymentPreparer(node);
preparer.sshWaiter = badWaiter;
preparer.prepareESBDeployment();
}
}