package org.openstack.atlas.api.resources;
import org.openstack.atlas.service.domain.entities.LoadBalancer;
import org.openstack.atlas.service.domain.operations.Operation;
import org.openstack.atlas.service.domain.operations.OperationResponse;
import org.openstack.atlas.api.integration.AsyncService;
import junit.framework.Assert;
import org.dozer.DozerBeanMapper;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.Mockito.*;
@RunWith(Enclosed.class)
@Ignore
public class NetworkItemResourceTest {
public static class WhenDeletingAccessListItem {
private AsyncService esbService;
private NetworkItemResource networkItemResource;
private OperationResponse operationResponse;
@Before
public void setUp() {
esbService = mock(AsyncService.class);
networkItemResource = new NetworkItemResource();
networkItemResource.setAsyncService(esbService);
operationResponse = new OperationResponse();
List<String> mappingFiles = new ArrayList<String>();
mappingFiles.add("loadbalancing-dozer-mapping.xml");
networkItemResource.setDozerMapper(new DozerBeanMapper(mappingFiles));
}
@Test
public void shouldProduceAcceptResponseWhenEsbResponseIsNormal() throws Exception {
operationResponse.setExecutedOkay(true);
Response response = networkItemResource.deleteNetworkItem();
Assert.assertEquals(202, response.getStatus());
}
@Test
public void shouldProduceInternalServerErrorWhenEsbResponseHasError() throws Exception {
operationResponse.setExecutedOkay(false);
Response response = networkItemResource.deleteNetworkItem();
Assert.assertEquals(500, response.getStatus());
}
@Test
public void shouldProduceInternalServerErrorWhenEsbResponseIsNull() throws Exception {
Response response = networkItemResource.deleteNetworkItem();
Assert.assertEquals(500, response.getStatus());
}
@Test
public void shouldProduceInternalServerErrorWhenEsbServiceThrowsRuntimeException() throws Exception {
doThrow(new Exception()).when(esbService).callAsyncLoadBalancingOperation(Matchers.eq(Operation.DELETE_ACCESS_LIST_ITEM), Matchers.<LoadBalancer>any());
Response response = networkItemResource.deleteNetworkItem();
Assert.assertEquals(500, response.getStatus());
}
}
}