|
|
@@ -1,31 +0,0 @@
|
|
|
-package com.zksy.base.alarm.service;
|
|
|
-
|
|
|
-import com.zksy.common.core.redis.RedisCache;
|
|
|
-import com.zksy.common.exception.ServiceException;
|
|
|
-import org.junit.jupiter.api.Test;
|
|
|
-import org.springframework.mock.web.MockMultipartFile;
|
|
|
-import java.util.Arrays;
|
|
|
-import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
-import static org.mockito.Mockito.*;
|
|
|
-
|
|
|
-class AlarmReviewAttachmentServiceTest {
|
|
|
- private final RedisCache redis = mock(RedisCache.class);
|
|
|
- private final AlarmReviewAttachmentService service = new AlarmReviewAttachmentService(redis);
|
|
|
- @Test void rejectsEmptyAndDisguisedExecutableBeforeSaving() {
|
|
|
- assertThrows(ServiceException.class, () -> service.upload("a1", new MockMultipartFile("file",new byte[0])));
|
|
|
- assertThrows(ServiceException.class, () -> service.upload("a1",new MockMultipartFile("file","image.png","image/png","<script>test</script>".getBytes())));
|
|
|
- assertThrows(ServiceException.class, () -> service.upload("a1",new MockMultipartFile("file","payload.svg","image/svg+xml","<svg/>".getBytes())));
|
|
|
- verifyNoInteractions(redis);
|
|
|
- }
|
|
|
- @Test void rejectsPdfEvenWithAValidPdfHeaderOrRenamedAsImage() {
|
|
|
- byte[] pdf = "%PDF-1.7 test".getBytes(java.nio.charset.StandardCharsets.US_ASCII);
|
|
|
- assertThrows(ServiceException.class, () -> service.upload("a1", new MockMultipartFile("file","report.pdf","application/pdf",pdf)));
|
|
|
- assertThrows(ServiceException.class, () -> service.upload("a1", new MockMultipartFile("file","report.png","image/png",pdf)));
|
|
|
- verifyNoInteractions(redis);
|
|
|
- }
|
|
|
- @Test void rejectsDuplicateOrForgedAttachmentTickets() {
|
|
|
- assertThrows(ServiceException.class, () -> service.resolve("a1",Arrays.asList("same","same")));
|
|
|
- assertThrows(ServiceException.class, () -> service.resolve("a1",Arrays.asList("https://attacker.example/test.pdf")));
|
|
|
- verifyNoInteractions(redis);
|
|
|
- }
|
|
|
-}
|