// Start Generation Here
@RunWith(MockitoJUnitRunner.class)
public class SnapshotServiceImplTest {
@InjectMocks
private SnapshotServiceImpl snapshotServiceImpl;
@Mock
private RestHighLevelClient restHighLevelClient;
@Mock
private ElasticSearchService elasticSearchService;
@Mock
private IndicesRestoreMapper indicesRestoreMapper;
@Mock
private IndicesRestoreRecordMapper indicesRestoreRecordMapper;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testQueryIndicesByRepoAndSnapshot_Success() throws IOException {
// 準備測試資料
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("snap1");
SnapshotInfo snapshotInfo = mock(SnapshotInfo.class);
when(snapshotInfo.indices()).thenReturn(Arrays.asList("index1", "index2"));
GetSnapshotsResponse getSnapshotsResponse = new GetSnapshotsResponse(Arrays.asList(snapshotInfo));
when(restHighLevelClient.snapshot().get(any(GetSnapshotsRequest.class), any(RequestOptions.class)))
.thenReturn(getSnapshotsResponse);
// 執行方法
QueryIndicesByRepoAndSnapshotResponse response = snapshotServiceImpl.queryIndicesByRepoAndSnapshot(request);
// 驗證結果
assertNotNull(response);
assertEquals(Arrays.asList("index1", "index2"), response.getIndicesList());
}
@Test(expected = TitanException.class)
public void testQueryIndicesByRepoAndSnapshot_NullRequest() throws IOException {
snapshotServiceImpl.queryIndicesByRepoAndSnapshot(null);
}
@Test(expected = TitanException.class)
public void testQueryIndicesByRepoAndSnapshot_BlankRepositoryName() throws IOException {
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("");
request.setSnapshotName("snap1");
snapshotServiceImpl.queryIndicesByRepoAndSnapshot(request);
}
@Test(expected = TitanException.class)
public void testQueryIndicesByRepoAndSnapshot_BlankSnapshotName() throws IOException {
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("");
snapshotServiceImpl.queryIndicesByRepoAndSnapshot(request);
}
@Test(expected = TitanException.class)
public void testQueryIndicesByRepoAndSnapshot_IOException() throws IOException {
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("snap1");
when(restHighLevelClient.snapshot().get(any(GetSnapshotsRequest.class), any(RequestOptions.class)))
.thenThrow(new IOException("IO異常"));
snapshotServiceImpl.queryIndicesByRepoAndSnapshot(request);
}
@Test
public void testQueryIndicesByRepoAndSnapshot_NoSnapshots() throws IOException {
// 準備測試資料
QueryIndicesByRepoAndSnapshotRequest request = new QueryIndicesByRepoAndSnapshotRequest();
request.setRepositoryName("repo1");
request.setSnapshotName("snap1");
when(restHighLevelClient.snapshot().get(any(GetSnapshotsRequest.class), any(RequestOptions.class)))
.thenReturn(new GetSnapshotsResponse(Arrays.asList()));
// 執行方法
QueryIndicesByRepoAndSnapshotResponse response = snapshotServiceImpl.queryIndicesByRepoAndSnapshot(request);
// 驗證結果
assertNotNull(response);
assertTrue(response.getIndicesList().isEmpty());
}
}