package org.zend.webapi.test.core;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Calendar;
import org.junit.Test;
import org.restlet.resource.ClientResource;
import org.restlet.resource.ResourceException;
import org.zend.webapi.core.WebApiException;
import org.zend.webapi.core.connection.data.values.ServerType;
import org.zend.webapi.core.connection.data.values.WebApiVersion;
import org.zend.webapi.core.connection.request.IRequest;
import org.zend.webapi.core.connection.response.ResponseCode;
import org.zend.webapi.internal.core.connection.ServiceDispatcher;
import org.zend.webapi.internal.core.connection.auth.signature.SignatureException;
import org.zend.webapi.internal.core.connection.exception.InternalWebApiException;
import org.zend.webapi.internal.core.connection.exception.WebApiCommunicationError;
import org.zend.webapi.internal.core.connection.request.GetSystemInfoRequest;
import org.zend.webapi.test.AbstractTestServer;
import org.zend.webapi.test.Configuration;
public class TestServiceDispatcher extends AbstractTestServer {
// client resource which handle() returns null
private class SimpleServiceDispatcher extends ServiceDispatcher {
@Override
protected ClientResource getResource(IRequest webApiRequest)
throws SignatureException {
ClientResource resource = mock(ClientResource.class);
when(resource.handle()).thenReturn(null);
return resource;
}
}
// client resource which throws ResourceException
private class SimpleServiceDispatcher2 extends ServiceDispatcher {
@Override
protected ClientResource getResource(IRequest webApiRequest)
throws SignatureException {
ClientResource resource = mock(ClientResource.class);
when(resource.handle()).thenThrow(new ResourceException(1));
return resource;
}
}
@Test
public void testDispatch() throws WebApiException {
initMock(handler.getSystemInfo(), "getSystemInfo", ResponseCode.OK);
IRequest simpleRequest = null;/*
* new
* GetSystemInfoRequest(WebApiVersion.V1,
* Calendar.getInstance().getTime(),
* Configuration.getKeyName(), "userAgent",
* Configuration.getHost(),
* Configuration.getSecretKey());
*/
// ServiceDispatcher dispatcher = new ServiceDispatcher();
// IResponse response = dispatcher.dispatch(simpleRequest);
// Assert.assertNotNull(response);
}
@Test(expected = IllegalArgumentException.class)
public void testDispatchNullRequest() throws WebApiException {
ServiceDispatcher dispatcher = new ServiceDispatcher();
dispatcher.dispatch(null);
}
@Test(expected = WebApiCommunicationError.class)
public void testDispatchNullResource() throws WebApiException {
initMock(handler.getSystemInfo(), "getSystemInfo", ResponseCode.OK);
IRequest simpleRequest = new GetSystemInfoRequest(WebApiVersion.V1,
Calendar.getInstance().getTime(), Configuration.getKeyName(),
"userAgent", Configuration.getHost(),
Configuration.getSecretKey(), ServerType.ZEND_SERVER_MANAGER);
ServiceDispatcher dispatcher = new SimpleServiceDispatcher();
dispatcher.dispatch(simpleRequest);
}
@Test(expected = InternalWebApiException.class)
public void testDispatchResourceException() throws WebApiException {
initMock(handler.getSystemInfo(), "getSystemInfo", ResponseCode.OK);
IRequest simpleRequest = new GetSystemInfoRequest(WebApiVersion.V1,
Calendar.getInstance().getTime(), Configuration.getKeyName(),
"userAgent", Configuration.getHost(),
Configuration.getSecretKey(), ServerType.ZEND_SERVER_MANAGER);
ServiceDispatcher dispatcher = new SimpleServiceDispatcher2();
dispatcher.dispatch(simpleRequest);
}
}