/* * #! * Ontopia Webed * #- * Copyright (C) 2001 - 2013 The Ontopia Project * #- * 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.ontopia.topicmaps.webed.impl.actions; import java.util.ArrayList; import java.util.Collections; import java.util.List; import junit.framework.TestCase; import net.ontopia.topicmaps.webed.core.ActionIF; import net.ontopia.topicmaps.webed.core.ActionParametersIF; import net.ontopia.topicmaps.webed.core.ActionResponseIF; import net.ontopia.topicmaps.webed.core.ActionRuntimeException; import net.ontopia.topicmaps.webed.impl.basic.ActionParameters; import net.ontopia.topicmaps.webed.impl.basic.ActionResponse; import net.ontopia.utils.ontojsp.FakeServletRequest; import net.ontopia.utils.ontojsp.FakeServletResponse; public class TestSetForwardAction extends TestCase { public TestSetForwardAction(String name) { super(name); } // tests public void testNoParameters() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(Collections.EMPTY_LIST); ActionResponseIF response = makeResponse(); forward.perform(params, response); assertNull("forward must be null", response.getForward()); } public void testOnlyRequestParam() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(Collections.EMPTY_LIST, "foo.jsp"); ActionResponseIF response = makeResponse(); forward.perform(params, response); assertTrue("forward was wrong", response.getForward().equals("foo.jsp")); } public void testOneParam() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters("foo.jsp", "bar.jsp"); ActionResponseIF response = makeResponse(); forward.perform(params, response); assertTrue("forward was wrong", response.getForward().equals("foo.jsp")); } public void testEchoingRequestParams() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(makeList("foo.jsp", "gurr"), "bar.jsp"); ActionResponseIF response = makeResponse(); forward.perform(params, response); assertTrue("forward was wrong", response.getForward().equals("foo.jsp")); assertTrue("wrong number of parameters set", response.getParameters().size() == 1); assertTrue("parameter gurr not set", response.getParameters().containsKey("gurr")); assertTrue("parameter gurr not null", response.getParameters().get("gurr") == null); } public void testEchoingRequestParams2() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(makeList("foo.jsp", "gurr", "bah"), "bar.jsp"); ActionResponseIF response = makeResponse(); forward.perform(params, response); assertTrue("forward was wrong", response.getForward().equals("foo.jsp")); assertTrue("wrong number of parameters set", response.getParameters().size() == 2); assertTrue("parameter gurr not set", response.getParameters().containsKey("gurr")); assertTrue("parameter gurr not null", response.getParameters().get("gurr") == null); assertTrue("parameter bah not set", response.getParameters().containsKey("bah")); assertTrue("parameter bah not null", response.getParameters().get("bah") == null); } public void testBadParamType() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(makeList(this), "bar.jsp"); ActionResponseIF response = makeResponse(); try { forward.perform(params, response); fail("action accepted parameter of bad type"); } catch (ActionRuntimeException e) { } } public void testBadParamType2() throws ActionRuntimeException { ActionIF forward = new SetForwardAction(); ActionParametersIF params = makeParameters(makeList(this, this), "bar.jsp"); ActionResponseIF response = makeResponse(); try { forward.perform(params, response); fail("action accepted parameter of bad type"); } catch (ActionRuntimeException e) { } } // helper methods private List makeList(Object param1) { param1 = Collections.singleton(param1); // params are lists of collections... return Collections.singletonList(param1); } private List makeList(Object param1, Object param2) { List list = new ArrayList(2); list.add(Collections.singleton(param1)); list.add(Collections.singleton(param2)); return list; } private List makeList(Object param1, Object param2, Object param3) { List list = new ArrayList(3); list.add(Collections.singleton(param1)); list.add(Collections.singleton(param2)); list.add(Collections.singleton(param3)); return list; } private ActionParametersIF makeParameters(Object param1, String value) { if (param1 instanceof List) return makeParameters((List) param1, value); return makeParameters(makeList(param1), value); } private ActionParametersIF makeParameters(List params) { return makeParameters(params, null); } private ActionParametersIF makeParameters(List params, String value) { String[] values = {value}; return new ActionParameters("boo1", values, null, params, null, null); } private ActionResponseIF makeResponse() { javax.servlet.http.HttpServletRequest request = new FakeServletRequest(); javax.servlet.http.HttpServletResponse response = new FakeServletResponse(); return new ActionResponse(request, response); } }