package org.ow2.choreos.ee;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.List;
import java.util.NoSuchElementException;
import org.junit.Before;
import org.junit.Test;
import org.ow2.choreos.chors.EnactmentException;
import org.ow2.choreos.chors.datamodel.Choreography;
import org.ow2.choreos.ee.services.ServiceCreator;
import org.ow2.choreos.ee.services.ServiceCreatorFactory;
import org.ow2.choreos.services.ServiceNotCreatedException;
import org.ow2.choreos.services.datamodel.DeployableService;
import org.ow2.choreos.services.datamodel.DeployableServiceSpec;
import org.ow2.choreos.services.datamodel.PackageType;
import org.ow2.choreos.services.datamodel.ServiceType;
import org.ow2.choreos.tests.ModelsForTest;
public class NewDeploymentPreparingTest {
private DeployableServiceSpec airlineSpec, travelSpec;
private Choreography chor;
private DeployableService airlineService, travelService;
@Before
public void setUp() {
ModelsForTest models = new ModelsForTest(ServiceType.SOAP, PackageType.COMMAND_LINE);
this.airlineSpec = models.getAirlineSpec();
this.travelSpec = models.getTravelSpec();
this.chor = models.getChoreography();
this.airlineService = models.getAirlineService();
this.travelService = models.getTravelService();
}
@Test
public void shouldProperlyConfigureAllServices() throws ServiceNotCreatedException, EnactmentException {
ServiceCreator smMock = mock(ServiceCreator.class);
when(smMock.createService(airlineSpec)).thenReturn(airlineService);
when(smMock.createService(travelSpec)).thenReturn(travelService);
ServiceCreatorFactory.serviceCreatorForTest = smMock;
ServiceCreatorFactory.testing = true;
NewDeploymentPreparing preparer = new NewDeploymentPreparing(chor.getId(), chor.getChoreographySpec()
.getDeployableServiceSpecs());
List<DeployableService> configuredServices = preparer.prepare();
assertEquals(2, configuredServices.size());
String airlineUUID = airlineService.getUUID();
DeployableService configuredAirlineService = findServiceByUUID(airlineUUID, configuredServices);
assertEquals(airlineService, configuredAirlineService);
String travelUUID = travelService.getUUID();
DeployableService configuredTravelService = findServiceByUUID(travelUUID, configuredServices);
assertEquals(travelService, configuredTravelService);
ServiceCreatorFactory.testing = false;
}
private DeployableService findServiceByUUID(String uuid, List<DeployableService> services) {
for (DeployableService svc : services) {
if (uuid.equals(svc.getUUID())) {
return svc;
}
}
throw new NoSuchElementException();
}
}