package org.ovirt.engine.core.branding;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class BrandingCascadingResourceServletTest {
@Mock
HttpServletRequest mockRequest;
@Mock
HttpServletResponse mockResponse;
@Mock
BrandingManager mockBrandingManager;
@Mock
ServletOutputStream mockResponseOutputStream;
@Mock
CascadingResource mockCascadingResource;
BrandingCascadingResourceServlet testServlet;
@Before
public void setUp() throws Exception {
testServlet = new BrandingCascadingResourceServlet();
testServlet.init(mockBrandingManager);
// simulate a request for "/theme-resource/favicon"
when(mockRequest.getPathInfo()).thenReturn("favicon"); //$NON-NLS-1$
when(mockResponse.getOutputStream()).thenReturn(mockResponseOutputStream);
}
/**
* Test that serving works when the request is "/favicon".
*/
@Test
public void testDoGetServeFavicon() throws IOException, ServletException, URISyntaxException {
when(mockBrandingManager.getCascadingResource("favicon")).thenReturn(mockCascadingResource); //$NON-NLS-1$
when(mockCascadingResource.getFile()).thenReturn(
new File(this.getClass().getClassLoader().
getResource("./org/ovirt/engine/core/branding/02-test2.brand/images/favicon.ico") //$NON-NLS-1$
.toURI().getPath()));
when(mockCascadingResource.getContentType()).thenReturn("madeUp/ContentType"); //$NON-NLS-1$
testServlet.doGet(mockRequest, mockResponse);
verify(mockResponse).setHeader(eq("ETag"), anyString()); //$NON-NLS-1$
verify(mockResponse).setContentType("madeUp/ContentType"); //$NON-NLS-1$
}
/**
* Test that a 404 is served when no resources are available.
*/
@Test
public void testDoGetServeFaviconNotFound() throws IOException, ServletException, URISyntaxException {
testServlet.doGet(mockRequest, mockResponse);
verify(mockResponse).sendError(HttpServletResponse.SC_NOT_FOUND);
}
}