View Javadoc
1   package com.atlassian.refapp.decorator;
2   
3   import com.atlassian.refapp.auth.external.WebSudoSessionManager;
4   import com.atlassian.soy.renderer.SoyTemplateRenderer;
5   import com.atlassian.templaterenderer.TemplateRenderer;
6   import com.opensymphony.module.sitemesh.Page;
7   import com.opensymphony.module.sitemesh.RequestConstants;
8   import org.junit.Before;
9   import org.junit.Test;
10  import org.junit.runner.RunWith;
11  import org.mockito.Mock;
12  import org.mockito.Mockito;
13  import org.mockito.runners.MockitoJUnit44Runner;
14  
15  import javax.servlet.ServletConfig;
16  import javax.servlet.ServletContext;
17  import javax.servlet.ServletException;
18  import javax.servlet.http.HttpServletRequest;
19  import javax.servlet.http.HttpServletResponse;
20  import java.io.IOException;
21  import java.io.InputStream;
22  
23  @RunWith(MockitoJUnit44Runner.class)
24  public class DecoratorServletTest {
25      @Mock
26      TemplateRenderer templateRenderer;
27      @Mock
28      HttpServletRequest request;
29      @Mock
30      HttpServletResponse response;
31      @Mock
32      ServletConfig servletConfig;
33      @Mock
34      ServletContext servletContext;
35      @Mock
36      SoyTemplateRenderer soyTemplateRenderer;
37      @Mock
38      Page page;
39  
40      @Mock
41      WebSudoSessionManager webSudoSessionManager;
42  
43      @Before
44      public final void setUpMockBehaviour() {
45          Mockito.when(request.getAttribute(RequestConstants.PAGE)).thenReturn(page);
46          Mockito.when(servletConfig.getServletContext()).thenReturn(servletContext);
47      }
48  
49      @Test
50      public void noExceptionsAreThrownWhenPropertiesAreNotAvailable() throws ServletException, IOException {
51          DecoratorServlet ds = new DecoratorServlet(templateRenderer, webSudoSessionManager, soyTemplateRenderer);
52          ds.init(servletConfig);
53          ds.service(request, response);
54      }
55  
56      @Test
57      public void exceptionsAreNotPropagatedWhenStreamReadFails() throws ServletException, IOException {
58          InputStream immediatelyFailingInputStream = Mockito.mock(InputStream.class);
59          Mockito.when(immediatelyFailingInputStream.read()).thenThrow(new IOException());
60  
61          Mockito.when(servletContext.getResourceAsStream(Mockito.anyString())).thenReturn(immediatelyFailingInputStream);
62          DecoratorServlet ds = new DecoratorServlet(templateRenderer, webSudoSessionManager, soyTemplateRenderer);
63          ds.init(servletConfig);
64          ds.service(request, response);
65      }
66  }