Untitled
unknown
plain_text
8 months ago
5.4 kB
2
Indexable
Never
public class ExampleUnitTest { @Test void testLogFeatureExtraDataUploaded() throws Throwable { // Chuẩn bị dữ liệu mẫu int featureId = 1; MultipartFile[] multipartFiles = new MultipartFile[1]; ProceedingJoinPoint joinPoint = Mockito.mock(ProceedingJoinPoint.class); Example example = new Example(); Example exampleMock = Mockito.spy(example); // Tạo mock của Example // Tạo proxy bằng AspectJProxyFactory AspectJProxyFactory proxyFactory = new AspectJProxyFactory(exampleMock); FeatureExtraDataService featureExtraDataServiceProxy = Mockito.mock(FeatureExtraDataService.class); proxyFactory.addAspect(new FeatureExtraDataServiceAspect(featureExtraDataServiceProxy)); Example exampleProxy = proxyFactory.getProxy(); // Thiết lập mock cho phương thức isExtraDataExistInS3() trên proxy Mockito.when(featureExtraDataServiceProxy.isExtraDataExistInS3(any(int.class), any(MultipartFile[].class), any(ExtraDataType.class))) .thenReturn(true); // Thực thi phương thức cần kiểm tra trên proxy String result = exampleProxy.logFeatureExtraDataUploaded(joinPoint, featureId, multipartFiles, ExtraDataType.TYPE_A); // Kiểm tra kết quả trả về assertEquals("endpointUrl", result); // Kiểm tra các phương thức tương tác với proxy Mockito.verify(featureExtraDataServiceProxy, Mockito.times(1)) .isExtraDataExistInS3(featureId, multipartFiles, ExtraDataType.TYPE_A); Mockito.verify(joinPoint, Mockito.times(1)).proceed(); // Kiểm tra việc gọi phương thức saveChangeLog() Mockito.verify(exampleMock, Mockito.times(1)).saveChangeLog(featureId, null, DataType.EXTRA_DATA, ChangeType.UPDATED, "{\"extraDataName\":\"fileName\"}"); } } //////////////////////// public class ExampleUnitTest { @Test void testLogFeatureExtraDataDeleted() { // Chuẩn bị dữ liệu mẫu int featureId = 1; String extraDataName = "example.txt"; Boolean success = true; JoinPoint joinPoint = Mockito.mock(JoinPoint.class); Example example = new Example(); Example exampleMock = Mockito.spy(example); // Tạo mock của Example // Tạo proxy bằng AspectJProxyFactory AspectJProxyFactory proxyFactory = new AspectJProxyFactory(exampleMock); FeatureExtraDataService featureExtraDataServiceProxy = Mockito.mock(FeatureExtraDataService.class); proxyFactory.addAspect(new FeatureExtraDataServiceAspect(featureExtraDataServiceProxy)); Example exampleProxy = proxyFactory.getProxy(); // Thực thi phương thức cần kiểm tra trên proxy exampleProxy.logFeatureExtraDataDeleted(joinPoint, featureId, extraDataName, success); // Kiểm tra việc gọi phương thức saveChangeLog() Mockito.verify(exampleMock, Mockito.times(1)).saveChangeLog(featureId, null, DataType.EXTRA_DATA, ChangeType.DELETED, "{\"extraDataName\":\"example.txt\"}"); } } //////////////////////////// @PrepareForTest({ObjectMapper.class, HttpStatus.class}) public class TestFilterTest { @Test public void testDoFilterInternal_InvalidApiKey_SendError() throws ServletException, IOException { // Arrange String configApiKey = "validApiKey"; String invalidApiKey = "invalidApiKey"; // Tạo các mock objects HttpServletRequest request = mock(HttpServletRequest.class); HttpServletResponse response = mock(HttpServletResponse.class); ServletOutputStream outputStream = mock(ServletOutputStream.class); FilterChain filterChain = mock(FilterChain.class); // Thiết lập giá trị cho API key trong header when(request.getHeader("x-api-key")).thenReturn(invalidApiKey); // Mock các phương thức tĩnh của lớp ObjectMapper và HttpStatus PowerMockito.mockStatic(ObjectMapper.class); PowerMockito.mockStatic(HttpStatus.class); // Thiết lập giá trị trả về cho phương thức writeValueAsString của ObjectMapper when(ObjectMapper.writeValueAsString(any(ResultDTO.class))).thenReturn("{\"status\": \"UNAUTHORIZED\"}"); TestFilter testFilter = new TestFilter(configApiKey); // Act testFilter.doFilterInternal(request, response, filterChain); // Assert // Kiểm tra xem phương thức sendError đã được gọi hay chưa verify(response, times(1)).resetBuffer(); verify(response, times(1)).setContentType("application/json"); verify(response, times(1)).setStatus(HttpServletResponse.SC_UNAUTHORIZED); // Kiểm tra xem phương thức doFilter đã không được gọi verify(filterChain, never()).doFilter(request, response); // Kiểm tra xem phương thức getOutputStream đã được gọi verify(response, times(1)).getOutputStream(); // Kiểm tra xem phương thức print và flushBuffer đã được gọi verify(outputStream, times(1)).print("{\"status\": \"UNAUTHORIZED\"}"); verify(response, times(1)).flushBuffer(); } }
Leave a Comment