| /** |
| * Copyright (C) 2008 Google Inc. |
| * |
| * 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 com.google.inject.servlet; |
| |
| import com.google.inject.Binding; |
| import com.google.inject.Injector; |
| import com.google.inject.Key; |
| import com.google.inject.spi.BindingScopingVisitor; |
| import com.google.inject.internal.util.Maps; |
| import com.google.inject.internal.util.Sets; |
| import java.util.Enumeration; |
| import java.util.HashMap; |
| import java.util.Map; |
| import javax.servlet.ServletConfig; |
| import javax.servlet.ServletContext; |
| import javax.servlet.ServletException; |
| import javax.servlet.http.HttpServlet; |
| import junit.framework.TestCase; |
| import static org.easymock.EasyMock.createMock; |
| import static org.easymock.EasyMock.expect; |
| import static org.easymock.EasyMock.replay; |
| import static org.easymock.EasyMock.anyObject; |
| import static org.easymock.EasyMock.verify; |
| |
| /** |
| * Basic unit test for lifecycle of a ServletDefinition (wrapper). |
| * |
| * @author Dhanji R. Prasanna (dhanji@gmail com) |
| */ |
| public class ServletDefinitionTest extends TestCase { |
| |
| public final void testServletInitAndConfig() throws ServletException { |
| Injector injector = createMock(Injector.class); |
| Binding binding = createMock(Binding.class); |
| |
| expect(binding.acceptScopingVisitor((BindingScopingVisitor) anyObject())) |
| .andReturn(true); |
| expect(injector.getBinding(Key.get(HttpServlet.class))) |
| .andReturn(binding); |
| final HttpServlet mockServlet = new HttpServlet() { |
| }; |
| expect(injector.getInstance(Key.get(HttpServlet.class))) |
| .andReturn(mockServlet) |
| .anyTimes(); |
| |
| replay(injector, binding); |
| |
| //some init params |
| //noinspection SSBasedInspection |
| final Map<String, String> initParams = new HashMap<String, String>() { |
| { |
| put("ahsd", "asdas24dok"); |
| put("ahssd", "asdasd124ok"); |
| put("ahfsasd", "asda124sdok"); |
| put("ahsasgd", "a124sdasdok"); |
| put("ahsd124124", "as124124124dasdok"); |
| } |
| }; |
| |
| String pattern = "/*"; |
| final ServletDefinition servletDefinition = new ServletDefinition(pattern, |
| Key.get(HttpServlet.class), UriPatternType.get(UriPatternType.SERVLET, pattern), initParams, null); |
| |
| ServletContext servletContext = createMock(ServletContext.class); |
| final String contextName = "thing__!@@44__SRV" + getClass(); |
| expect(servletContext.getServletContextName()) |
| .andReturn(contextName); |
| |
| replay(servletContext); |
| |
| servletDefinition.init(servletContext, injector, |
| Sets.newSetFromMap(Maps.<HttpServlet, Boolean>newIdentityHashMap())); |
| |
| assertNotNull(mockServlet.getServletContext()); |
| assertEquals(contextName, mockServlet.getServletContext().getServletContextName()); |
| assertEquals(Key.get(HttpServlet.class).toString(), mockServlet.getServletName()); |
| |
| final ServletConfig servletConfig = mockServlet.getServletConfig(); |
| final Enumeration names = servletConfig.getInitParameterNames(); |
| while (names.hasMoreElements()) { |
| String name = (String) names.nextElement(); |
| |
| assertTrue(initParams.containsKey(name)); |
| assertEquals(initParams.get(name), servletConfig.getInitParameter(name)); |
| } |
| |
| verify(injector, binding, servletContext); |
| } |
| } |