diff --git a/gymboard-cdn/src/main/java/nl/andrewlalis/gymboardcdn/service/UploadService.java b/gymboard-cdn/src/main/java/nl/andrewlalis/gymboardcdn/service/UploadService.java index df551cd..4cf8225 100644 --- a/gymboard-cdn/src/main/java/nl/andrewlalis/gymboardcdn/service/UploadService.java +++ b/gymboard-cdn/src/main/java/nl/andrewlalis/gymboardcdn/service/UploadService.java @@ -14,7 +14,6 @@ import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; import org.springframework.web.server.ResponseStatusException; import java.io.IOException; diff --git a/gymboard-cdn/src/test/java/nl/andrewlalis/gymboardcdn/service/UploadServiceTest.java b/gymboard-cdn/src/test/java/nl/andrewlalis/gymboardcdn/service/UploadServiceTest.java index b8eb101..ad6ca88 100644 --- a/gymboard-cdn/src/test/java/nl/andrewlalis/gymboardcdn/service/UploadServiceTest.java +++ b/gymboard-cdn/src/test/java/nl/andrewlalis/gymboardcdn/service/UploadServiceTest.java @@ -1,15 +1,16 @@ package nl.andrewlalis.gymboardcdn.service; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.http.HttpServletRequest; import nl.andrewlalis.gymboardcdn.api.FileUploadResponse; import nl.andrewlalis.gymboardcdn.model.StoredFileRepository; import nl.andrewlalis.gymboardcdn.model.VideoProcessingTask; import nl.andrewlalis.gymboardcdn.model.VideoProcessingTaskRepository; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import org.springframework.mock.web.MockMultipartFile; -import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -18,6 +19,12 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; public class UploadServiceTest { + /** + * Tests that when a processable video is uploaded, that it's saved to a + * temporary file, a new video processing task is created, and a new file + * identifier is generated for the file that may result. + * @throws IOException If an error occurs. + */ @Test public void processableVideoUploadSuccess() throws IOException { StoredFileRepository storedFileRepository = Mockito.mock(StoredFileRepository.class); @@ -25,13 +32,7 @@ public class UploadServiceTest { when(videoTaskRepository.save(any(VideoProcessingTask.class))) .then(returnsFirstArg()); FileService fileService = Mockito.mock(FileService.class); - MultipartFile multipartFile = new MockMultipartFile( - "file", - "testing.mp4", - "video/mp4", - new byte[]{1, 2, 3} - ); - when(fileService.saveToTempFile(any(MultipartFile.class))) + when(fileService.saveToTempFile(any(InputStream.class), any(String.class))) .thenReturn(Path.of("test-cdn-files", "tmp", "bleh.mp4")); when(fileService.createNewFileIdentifier()).thenReturn("abc"); @@ -41,10 +42,14 @@ public class UploadServiceTest { videoTaskRepository, fileService ); + HttpServletRequest mockRequest = mock(HttpServletRequest.class); + when(mockRequest.getHeader("X-Filename")).thenReturn("testing.mp4"); + ServletInputStream mockRequestInputStream = mock(ServletInputStream.class); + when(mockRequest.getInputStream()).thenReturn(mockRequestInputStream); var expectedResponse = new FileUploadResponse("abc"); - var response = uploadService.processableVideoUpload(multipartFile); + var response = uploadService.processableVideoUpload(mockRequest); assertEquals(expectedResponse, response); - verify(fileService, times(1)).saveToTempFile(multipartFile); + verify(fileService, times(1)).saveToTempFile(any(), any()); verify(videoTaskRepository, times(1)).save(any()); verify(fileService, times(1)).createNewFileIdentifier(); }