@Test
public void testTaskStart() throws Exception {
final CassandraDaemonTask daemonTask = Mockito.mock(CassandraDaemonTask.class);
Mockito.when(cassandraState.get(DOWNLOAD_NODE_0)).thenReturn(Optional.empty());
final HashMap<String, CassandraDaemonTask> map = new HashMap<>();
map.put(NODE_0, daemonTask);
Mockito.when(cassandraState.getDaemons()).thenReturn(map);
final BackupRestoreContext backupRestoreContext = BackupRestoreContext.create("", "", "", "", "", "", false, "");
final DownloadSnapshotTask snapshotTask = Mockito.mock(DownloadSnapshotTask.class);
Mockito.when(snapshotTask.getSlaveId()).thenReturn("1234");
Mockito.when(snapshotTask.getType()).thenReturn(CassandraTask.TYPE.SNAPSHOT_DOWNLOAD);
Mockito.when(cassandraState.getOrCreateSnapshotDownload(daemonTask, backupRestoreContext))
.thenReturn(snapshotTask);
final DownloadSnapshotStep downloadSnapshotStep =
new DownloadSnapshotStep(NODE_0, cassandraState, provider, backupRestoreContext);
final OfferRequirement requirement = Mockito.mock(OfferRequirement.class);
Mockito.when(provider.getUpdateOfferRequirement(Mockito.any(), Mockito.any())).thenReturn(requirement);
Assert.assertTrue(downloadSnapshotStep.start().isPresent());
Assert.assertEquals(Status.PENDING, downloadSnapshotStep.getStatus());
}
}