/*
* Copyright 2008-2014 by Emeric Vernat
*
* This file is part of Java Melody.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.bull.javamelody;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
import org.junit.Test;
/**
* Test unitaire de la classe JspWrapper.
* @author Emeric Vernat
*/
public class TestJspWrapper {
/**
* Initialisation.
*/
@Before
public void setUp() {
Utils.initialize();
}
/**
* Test.
* @throws ServletException e
* @throws IOException e
*/
@Test
public void testJspWrapper() throws ServletException, IOException {
assertNotNull("getJspCounter", JspWrapper.getJspCounter());
final ServletContext servletContext = createNiceMock(ServletContext.class);
final HttpServletRequest request = createNiceMock(HttpServletRequest.class);
final HttpServletResponse response = createNiceMock(HttpServletResponse.class);
final RequestDispatcher requestDispatcher = createNiceMock(RequestDispatcher.class);
final RequestDispatcher requestDispatcherWithError = createNiceMock(RequestDispatcher.class);
final RequestDispatcher requestDispatcherWithException = createNiceMock(RequestDispatcher.class);
final String url1 = "test.jsp";
final String url2 = "test.jsp?param=test2";
final String url3 = "test.jsp?param=test3";
final String url4 = null;
expect(request.getRequestDispatcher(url1)).andReturn(requestDispatcher);
expect(request.getRequestDispatcher(url2)).andReturn(requestDispatcherWithError);
requestDispatcherWithError.forward(request, response);
expectLastCall().andThrow(new UnknownError("erreur dans forward"));
expect(request.getRequestDispatcher(url3)).andReturn(requestDispatcherWithException);
requestDispatcherWithException.forward(request, response);
expectLastCall().andThrow(new IllegalStateException("erreur dans forward"));
expect(request.getRequestDispatcher(url4)).andReturn(null);
replay(request);
replay(response);
replay(requestDispatcher);
replay(requestDispatcherWithError);
replay(requestDispatcherWithException);
replay(servletContext);
Parameters.initialize(servletContext);
final HttpServletRequest wrappedRequest = JspWrapper.createHttpRequestWrapper(request,
response);
final RequestDispatcher wrappedRequestDispatcher = wrappedRequest
.getRequestDispatcher(url1);
wrappedRequestDispatcher.toString();
wrappedRequestDispatcher.include(wrappedRequest, response);
final RequestDispatcher wrappedRequestDispatcher2 = wrappedRequest
.getRequestDispatcher(url2);
try {
wrappedRequestDispatcher2.forward(request, response);
} catch (final UnknownError e) {
assertNotNull("ok", e);
}
final RequestDispatcher wrappedRequestDispatcher3 = wrappedRequest
.getRequestDispatcher(url3);
try {
wrappedRequestDispatcher3.forward(request, response);
} catch (final IllegalStateException e) {
assertNotNull("ok", e);
}
final RequestDispatcher wrappedRequestDispatcher4 = wrappedRequest
.getRequestDispatcher(url4);
assertNull("getRequestDispatcher(null)", wrappedRequestDispatcher4);
verify(request);
verify(response);
verify(requestDispatcher);
// verify ne marche pas ici car on fait une Error, verify(requestDispatcherWithError);
verify(requestDispatcherWithException);
verify(servletContext);
}
}