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 }