/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * 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.uberfire.ext.plugin.backend; import java.io.IOException; import java.net.URI; import java.util.Iterator; import javax.servlet.ServletConfig; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.uberfire.io.IOService; import org.uberfire.java.nio.file.FileSystem; import org.uberfire.java.nio.file.Path; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class PluginMediaServletTest { @Mock FileSystem fileSystem; @Mock Iterable<Path> iterable; @Mock Iterator<Path> iterator; @Mock ServletConfig config; @Mock IOService ioService; @Mock MediaServletURI mediaServletURI; @InjectMocks PluginMediaServlet servlet = fakeServlet(); @Test public void testInit() throws Exception { when(iterable.iterator()).thenReturn(iterator); when(fileSystem.getRootDirectories()).thenReturn(iterable); when(config.getInitParameter(anyString())).thenReturn("/fake"); when(ioService.newFileSystem(any(URI.class), anyMapOf(String.class, Class.class))).thenReturn(fileSystem); servlet.init(config); verify(mediaServletURI).setURI(eq("fake/")); } @Test public void testDoPost() throws Exception { final FileItem fileItem = fileMock("C:\\Users\\user\\Desktop\\image.jpg"); final PluginMediaServlet servlet = spy(fakeServlet(fileItem)); final HttpServletRequest request = requestMock("/plugins/screen"); final HttpServletResponse response = responseMock(); servlet.doPost(request, response); verify(servlet).resolve("/screen/media/image.jpg"); } private HttpServletResponse responseMock() { return mock(HttpServletResponse.class); } private HttpServletRequest requestMock(final String requestURI) { final HttpServletRequest request = mock(HttpServletRequest.class); when(request.getRequestURI()).thenReturn(requestURI); when(request.getContextPath()).thenReturn(""); return request; } private FileItem fileMock(final String fileName) { final FileItem fileItem = mock(FileItem.class); when(fileItem.getName()).thenReturn(fileName); return fileItem; } private PluginMediaServlet fakeServlet() { return fakeServlet(null); } private PluginMediaServlet fakeServlet(final FileItem fileItem) { return new PluginMediaServlet() { @Override protected FileItem getFileItem(HttpServletRequest request) throws FileUploadException { return fileItem; } @Override protected void writeResponse(HttpServletResponse response, String ok) throws IOException { } }; } }