package org.cloudfoundry.community.servicebroker.datalifecycle.service;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.cloudfoundry.community.servicebroker.datalifecycle.model.BindingEntity;
import org.cloudfoundry.community.servicebroker.datalifecycle.repo.BindingRepository;
import org.cloudfoundry.community.servicebroker.datalifecycle.service.LCServiceInstanceBindingManager;
import org.cloudfoundry.community.servicebroker.model.ServiceInstanceBinding;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class ServiceInstanceBindingManagerTest {
@Mock
BindingRepository repo;
private LCServiceInstanceBindingManager bindingManager;
private Map<String, Object> creds = new HashMap<String, Object>();
private ServiceInstanceBinding binding = new ServiceInstanceBinding("binding-id",
"service-instance-id", creds, "syslog-drain", "app-guid");
private BindingEntity bindingEntity = new BindingEntity(binding);
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
bindingManager = new LCServiceInstanceBindingManager(repo);
}
@Test
public void itShoudlReturn1ServiceInstanceBinding() {
when(repo.findOne("binding")).thenReturn(new BindingEntity(binding));
assertNotNull(bindingManager.getBinding("binding"));
}
@Test
public void itShouldConvertCorrectly() {
when(repo.findOne("binding")).thenReturn(new BindingEntity(binding));
ServiceInstanceBinding retreivedBinding = bindingManager
.getBinding("binding");
assertThat(retreivedBinding.getId(), is(equalTo("binding-id")));
assertThat(retreivedBinding.getCredentials(), is(equalTo(creds)));
assertThat(retreivedBinding.getAppGuid(), is(equalTo("app-guid")));
assertThat(retreivedBinding.getServiceInstanceId(),
is(equalTo("service-instance-id")));
assertThat(retreivedBinding.getSyslogDrainUrl(),
is(equalTo("syslog-drain")));
}
@Test
public void itShouldReturnAllServiceBindings() {
when(repo.findAll()).thenReturn(
new ArrayList<BindingEntity>(Arrays.asList(bindingEntity,
bindingEntity, bindingEntity, bindingEntity)));
assertThat(bindingManager.getBindings(), hasSize(4));
}
@Test
public void itShouldReturnEmptyCollectionWithNothingInRepo() {
when(repo.findAll()).thenReturn(new ArrayList<BindingEntity>());
assertThat(bindingManager.getBindings(), hasSize(0));
}
@Test
public void itShouldDeleteOne() {
when(repo.findOne("binding")).thenReturn(bindingEntity);
ServiceInstanceBinding returned = bindingManager
.removeBinding("binding");
verify(repo).delete("binding");
assertThat(returned.getId(), is(equalTo("binding-id")));
}
@Test
public void itShouldSaveOne() {
bindingManager.saveBinding(binding);
verify(repo).save(any(BindingEntity.class));
}
@Test
public void itShouldReturnNullWhenWeDeleteSometihngThatIsntThere() {
assertNull(bindingManager.removeBinding("nothing"));
}
}