Untitled
unknown
plain_text
2 years ago
5.4 kB
11
Indexable
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();
}
}Editor is loading...
Leave a Comment