/* Copyright (c) 2001 - 2011 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.rest;
import org.easymock.EasyMock;
import org.geoserver.test.GeoServerTestSupport;
import org.restlet.Restlet;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
public class RESTDispatcherCallbackTest extends GeoServerTestSupport {
DispatcherCallback callback;
@Override
protected void setUpInternal() throws Exception {
callback = EasyMock.createMock(DispatcherCallback.class);
applicationContext.getBeanFactory().addBeanPostProcessor(new BeanPostProcessor() {
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
if ("testCallback".equals(beanName)) {
return callback;
}
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
});
applicationContext.getBeanFactory().destroySingletons();
applicationContext.getBeanFactory().preInstantiateSingletons();
}
public void testCallback() throws Exception {
callback.init((Request)anyObject(), (Response)anyObject());
expectLastCall();
callback.dispatched((Request)anyObject(), (Response)anyObject(), (Restlet)anyObject());
expectLastCall();
callback.finished((Request)anyObject(), (Response)anyObject());
expectLastCall();
replay(callback);
getAsServletResponse("/rest/index.html");
verify(callback);
}
public void testCallbackException() throws Exception {
callback.init((Request)anyObject(), (Response)anyObject());
expectLastCall();
callback.dispatched((Request)anyObject(), (Response)anyObject(), (Restlet)anyObject());
expectLastCall();
callback.exception((Request)anyObject(), (Response)anyObject(), (Exception)anyObject());
expectLastCall();
callback.finished((Request)anyObject(), (Response)anyObject());
expectLastCall();
replay(callback);
getAsServletResponse("/rest/exception?code=400&message=error");
verify(callback);
}
static class TestCallback implements DispatcherCallback {
public void init(Request request, Response response) {}
public void dispatched(Request request, Response response, Restlet restlet) {}
public void exception(Request request, Response response, Exception error) {}
public void finished(Request request, Response response) {}
}
}