/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.menu.dropdown.application;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import java.util.ArrayList;
import javax.servlet.FilterChain;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import junit.framework.TestCase;
import com.globant.katari.core.security.MenuAccessFilterer;
import com.globant.katari.core.web.MenuBar;
import com.globant.katari.core.web.MenuNode;
import com.globant.katari.core.web.ModuleContextRegistrar;
public class MenuSupportFilterTest extends TestCase {
private HttpServletRequest request;
private HttpServletResponse response;
private FilterChain chain;
private ModuleContextRegistrar registrar;
private MenuAccessFilterer filterer;
@Override
public void setUp() throws Exception {
// Mocks the context
ServletContext context = createMock(ServletContext.class);
replay(context);
// Mocks the servlet request.
request = createNiceMock(HttpServletRequest.class);
request.setAttribute(eq("com.globant.katari.menu.dropdown.tree"),
isA(UserMenuNode.class));
replay(request);
// Mocks the servlet response.
response = createNiceMock(HttpServletResponse.class);
replay(response);
// Mocks the filter chain.
chain = createMock(FilterChain.class);
chain.doFilter(request, response);
expectLastCall().anyTimes();
replay(chain);
// Mocks the ModuleContextRegistrar.
registrar = createNiceMock(ModuleContextRegistrar.class);
// Mocks the Menu access filterer
filterer = createNiceMock(MenuAccessFilterer.class);
}
/* Tests the menu support filter.
*/
public final void testDoFilter() throws Exception {
MenuBar menuBar = new MenuBar();
new MenuNode(menuBar, "Node", "Node", 1, "");
expect(filterer.filterMenuNodes(menuBar.getChildNodes())).andReturn(
menuBar.getChildNodes()).anyTimes();
expect(registrar.getMenuBar()).andReturn(menuBar);
expectLastCall(). anyTimes();
replay(filterer);
replay(registrar);
// Execute the test.
MenuSupportFilter filter = new MenuSupportFilter(registrar,filterer);
filter.init(null);
filter.doFilter(request, response, chain);
filter.destroy();
verify(request);
}
/* Tests the menu support filter simulating the initial user request (no
* module entry selected).
*/
public final void testDoFilter_noModuleEntry() throws Exception {
MenuBar menuBar = new MenuBar();
MenuNode node = new MenuNode(menuBar, "Node", "Node", 1, "");
node.getName();
expect(filterer.filterMenuNodes(menuBar.getChildNodes())).andReturn(
menuBar.getChildNodes()).anyTimes();
expect(registrar.getMenuBar()).andReturn(menuBar);
expectLastCall(). anyTimes();
replay(filterer);
replay(registrar);
// Execute the test.
MenuSupportFilter filter = new MenuSupportFilter(registrar,filterer);
filter.init(null);
filter.doFilter(request, response, chain);
filter.destroy();
verify(request);
}
/* Tests the menu support filter simulating the initial user request (no
* module entry selected).
*/
public final void testDoFilter_noMenuNodes() throws Exception {
MenuBar menuBar = new MenuBar();
expect(filterer.filterMenuNodes(menuBar.getChildNodes())).andReturn(
new ArrayList<MenuNode>()).anyTimes();
expect(registrar.getMenuBar()).andReturn(menuBar).anyTimes();
replay(filterer);
replay(registrar);
// Execute the test.
MenuSupportFilter filter = new MenuSupportFilter(registrar,filterer);
filter.init(null);
filter.doFilter(request, response, chain);
filter.destroy();
verify(request);
}
}