package org.cloudfoundry.community.servicebroker.datalifecycle.service;
import static org.cloudfoundry.community.servicebroker.datalifecycle.config.LCCatalogConfig.PRODUCTION;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
import org.cloudfoundry.community.servicebroker.datalifecycle.provider.CopyProvider;
import org.cloudfoundry.community.servicebroker.datalifecycle.repo.BrokerActionRepository;
import org.cloudfoundry.community.servicebroker.datalifecycle.service.LCServiceInstanceBindingManager;
import org.cloudfoundry.community.servicebroker.datalifecycle.service.LCServiceInstanceBindingService;
import org.cloudfoundry.community.servicebroker.datalifecycle.service.LCServiceInstanceService;
import org.cloudfoundry.community.servicebroker.exception.ServiceBrokerException;
import org.cloudfoundry.community.servicebroker.exception.ServiceInstanceBindingExistsException;
import org.cloudfoundry.community.servicebroker.model.CreateServiceInstanceBindingRequest;
import org.cloudfoundry.community.servicebroker.model.CreateServiceInstanceRequest;
import org.cloudfoundry.community.servicebroker.model.DeleteServiceInstanceBindingRequest;
import org.cloudfoundry.community.servicebroker.model.ServiceInstance;
import org.cloudfoundry.community.servicebroker.model.ServiceInstanceBinding;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import com.amazonaws.services.ec2.AmazonEC2Client;
public class LCServiceInstanceBindingServiceProdTest {
@Mock
AmazonEC2Client ec2Client;
private LCServiceInstanceBindingService bindingService;
private CreateServiceInstanceRequest createServiceInstanceRequest = new CreateServiceInstanceRequest(
"test_service", PRODUCTION, "org", "space", true)
.withServiceInstanceId("test_service_id");
private ServiceInstance serviceInstance = new ServiceInstance(
createServiceInstanceRequest);
@Mock
CopyProvider provider;
private static String bindingId = "test_binding";
@Mock
LCServiceInstanceService instanceService;
@Mock
BrokerActionRepository repo;
@Mock
LCServiceInstanceBindingManager bindingManager;
@Before
public void setUp() throws ServiceInstanceBindingExistsException,
ServiceBrokerException {
MockitoAnnotations.initMocks(this);
bindingService = new LCServiceInstanceBindingService(provider,
instanceService, repo, bindingManager);
}
@Test
public void itShouldReturnTheProdCreds() throws ServiceBrokerException,
ServiceInstanceBindingExistsException {
Map<String, Object> testCreds = new HashMap<String, Object>();
testCreds.put("uri", "prod_uri");
when(provider.getCreds("source_instance")).thenReturn(testCreds);
ServiceInstanceBinding bindResult = bindingService
.createServiceInstanceBinding(new CreateServiceInstanceBindingRequest(
serviceInstance.getServiceDefinitionId(), PRODUCTION,
"test_app")
.withBindingId(bindingId)
.and()
.withServiceInstanceId(
serviceInstance.getServiceInstanceId()));
assertThat(bindResult.getId(), is(equalTo(bindingId)));
}
@Test
public void itShouldNotInteractWithProviderForTheProductionCopyDuringUnbind()
throws ServiceBrokerException {
String serviceId = "postgrescmd";
bindingService
.deleteServiceInstanceBinding(new DeleteServiceInstanceBindingRequest(
bindingId, serviceInstance, serviceId, PRODUCTION));
verify(provider, never()).deleteCopy(any());
}
}