| /* |
| * Copyright 2004-2005 the original author or authors. |
| * |
| * 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 org.codehaus.groovy.grails.web.servlet.mvc; |
| |
| import java.util.Iterator; |
| import java.util.Properties; |
| |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| |
| import org.codehaus.groovy.grails.commons.GrailsApplication; |
| import org.codehaus.groovy.grails.web.servlet.mvc.exceptions.NoViewNameDefinedException; |
| import org.springframework.mock.web.MockHttpServletRequest; |
| import org.springframework.mock.web.MockHttpServletResponse; |
| import org.springframework.test.AbstractDependencyInjectionSpringContextTests; |
| import org.springframework.web.servlet.ModelAndView; |
| |
| /** |
| * |
| * |
| * @author Steven Devijver |
| * @since Jul 2, 2005 |
| */ |
| public class SimpleGrailsControllerTests extends AbstractDependencyInjectionSpringContextTests { |
| |
| public SimpleGrailsControllerTests() { |
| super(); |
| setPopulateProtectedVariables(true); |
| } |
| |
| protected GrailsApplication grailsApplication = null; |
| protected SimpleGrailsController controller = null; |
| |
| protected String[] getConfigLocations() { |
| return new String[] { "org/codehaus/groovy/grails/web/servlet/mvc/simple-grails-controller-tests.xml" }; |
| } |
| |
| private ModelAndView execute(String uri, Properties parameters) throws Exception { |
| MockHttpServletRequest request = new MockHttpServletRequest("GET", uri); |
| if (parameters != null) { |
| for (Iterator iter = parameters.keySet().iterator(); iter.hasNext();) { |
| String paramName = (String)iter.next(); |
| String paramValue = parameters.getProperty(paramName); |
| request.addParameter(paramName, paramValue); |
| } |
| } |
| MockHttpServletResponse response = new MockHttpServletResponse(); |
| return controller.handleRequest(request, response); |
| } |
| |
| public void testTestControllerFail() throws Exception { |
| try { |
| execute("/test", null); |
| fail(); |
| } catch (NoViewNameDefinedException e) { |
| // expected |
| } |
| } |
| |
| public void testSimpleControllerSuccess() throws Exception { |
| ModelAndView modelAndView = execute("/simple", null); |
| assertNull(modelAndView); |
| } |
| |
| public void testReturnModelAndViewControllerWithView() throws Exception { |
| ModelAndView modelAndView = execute("/org/codehaus/groovy/grails/web/servlet/mvc/returnModelAndView/withView", null); |
| assertNotNull(modelAndView); |
| } |
| |
| public void testReturnModelAndViewControlerWithoutView() throws Exception { |
| try { |
| execute("/org/codehaus/groovy/grails/web/servlet/mvc/returnModelAndView/withoutView", null); |
| fail(); |
| } catch (NoViewNameDefinedException e) { |
| // expected |
| } |
| } |
| |
| public void testReturnModelAndViewControllerViewConfigured() throws Exception { |
| ModelAndView modelAndView = execute("/org/codehaus/groovy/grails/web/servlet/mvc/returnModelAndView/viewConfigured", null); |
| assertNotNull(modelAndView); |
| assertEquals("someOtherView", modelAndView.getViewName()); |
| } |
| |
| public void testReturnModelAndViewControllerDefaultClosure() throws Exception { |
| ModelAndView modelAndView = execute("/org/codehaus/groovy/grails/web/servlet/mvc/returnModelAndView?test1=test2&test3=test4", null); |
| assertNotNull(modelAndView); |
| assertEquals("someView", modelAndView.getViewName()); |
| } |
| |
| public void testParameterControllerTwoParameters() throws Exception { |
| ModelAndView modelAndView = execute("/parameter", null); |
| assertNotNull(modelAndView); |
| assertEquals("someView", modelAndView.getViewName()); |
| assertNotNull(modelAndView.getModel().get("request")); |
| assertTrue(modelAndView.getModel().get("request") instanceof HttpServletRequest); |
| assertNotNull(modelAndView.getModel().get("response")); |
| assertTrue(modelAndView.getModel().get("response") instanceof HttpServletResponse); |
| } |
| |
| public void testParameterControllerTwoParametersRss() throws Exception { |
| ModelAndView modelAndView = execute("/parameter/rss", null); |
| assertNotNull(modelAndView); |
| assertEquals("someRssView", modelAndView.getViewName()); |
| assertNotNull(modelAndView.getModel().get("request")); |
| assertTrue(modelAndView.getModel().get("request") instanceof HttpServletRequest); |
| assertNotNull(modelAndView.getModel().get("response")); |
| assertTrue(modelAndView.getModel().get("response") instanceof HttpServletResponse); |
| } |
| |
| |
| public void testParameterControllerOneParameter() throws Exception { |
| ModelAndView modelAndView = execute("/parameter/oneParameter", null); |
| assertNotNull(modelAndView); |
| assertEquals("someOtherView", modelAndView.getViewName()); |
| assertNotNull(modelAndView.getModel().get("request")); |
| assertTrue(modelAndView.getModel().get("request") instanceof HttpServletRequest); |
| } |
| |
| public void testParameterControllerOneParameterRss() throws Exception { |
| ModelAndView modelAndView = execute("/parameter/oneParameter/rss", null); |
| assertNotNull(modelAndView); |
| assertEquals("someOtherRssView", modelAndView.getViewName()); |
| assertNotNull(modelAndView.getModel().get("request")); |
| assertTrue(modelAndView.getModel().get("request") instanceof HttpServletRequest); |
| } |
| |
| public void testNoViewController() throws Exception { |
| ModelAndView modelAndView = execute("/noView", null); |
| assertNull(modelAndView); |
| } |
| } |