Skip to content

Commit 94c6909

Browse files
chenkinsdkocher
authored andcommitted
Add encrypted file upload to test03AddVault.
1 parent bc2a5eb commit 94c6909

File tree

2 files changed

+50
-16
lines changed

2 files changed

+50
-16
lines changed

hub/src/test/java/ch/iterate/hub/core/AbstractHubSynchronizeTest.java

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,39 @@
55
package ch.iterate.hub.core;
66

77
import ch.cyberduck.core.*;
8+
import ch.cyberduck.core.features.Bulk;
89
import ch.cyberduck.core.features.Home;
910
import ch.cyberduck.core.features.Vault;
11+
import ch.cyberduck.core.features.Write;
12+
import ch.cyberduck.core.io.StatusOutputStream;
1013
import ch.cyberduck.core.preferences.PreferencesFactory;
1114
import ch.cyberduck.core.proxy.DisabledProxyFinder;
1215
import ch.cyberduck.core.ssl.DefaultX509KeyManager;
1316
import ch.cyberduck.core.ssl.DisabledX509TrustManager;
17+
import ch.cyberduck.core.transfer.Transfer;
18+
import ch.cyberduck.core.transfer.TransferItem;
19+
import ch.cyberduck.core.transfer.TransferStatus;
1420
import ch.cyberduck.core.vault.DefaultVaultRegistry;
1521

16-
import ch.iterate.hub.client.api.DeviceResourceApi;
17-
import ch.iterate.hub.client.api.UsersResourceApi;
18-
import ch.iterate.hub.client.api.VaultResourceApi;
19-
20-
import ch.iterate.hub.crypto.UserKeys;
21-
import ch.iterate.hub.crypto.uvf.UvfMetadataPayload;
22-
import ch.iterate.hub.workflows.UserKeysService;
23-
import ch.iterate.hub.workflows.UserKeysServiceImpl;
24-
import ch.iterate.hub.workflows.VaultServiceImpl;
25-
22+
import org.apache.commons.io.IOUtils;
23+
import org.apache.commons.lang3.RandomUtils;
2624
import org.apache.commons.lang3.StringUtils;
2725
import org.apache.logging.log4j.LogManager;
2826
import org.apache.logging.log4j.Logger;
27+
import org.junit.jupiter.api.Disabled;
28+
import org.junit.jupiter.api.Test;
2929
import org.junit.jupiter.params.ParameterizedTest;
3030
import org.openapitools.jackson.nullable.JsonNullableModule;
3131

32+
import java.io.ByteArrayInputStream;
33+
import java.util.Collections;
3234
import java.util.EnumSet;
3335
import java.util.List;
3436
import java.util.UUID;
3537

38+
import static ch.iterate.hub.testsetup.HubTestUtilities.getAdminApiClient;
39+
import static org.junit.jupiter.api.Assertions.*;
40+
3641
import ch.iterate.hub.client.ApiClient;
3742
import ch.iterate.hub.client.ApiException;
3843
import ch.iterate.hub.client.api.StorageProfileResourceApi;
@@ -58,12 +63,20 @@
5863
import com.fasterxml.jackson.annotation.JsonInclude;
5964
import com.fasterxml.jackson.databind.ObjectMapper;
6065

61-
import static ch.iterate.hub.testsetup.HubTestUtilities.getAdminApiClient;
62-
import static org.junit.jupiter.api.Assertions.*;
63-
6466
public abstract class AbstractHubSynchronizeTest extends AbstractHubTest {
6567
private static final Logger log = LogManager.getLogger(AbstractHubSynchronizeTest.class.getName());
6668

69+
/**
70+
* Use to start unattended setup and then run
71+
*
72+
* @throws InterruptedException
73+
*/
74+
@Test
75+
@Disabled
76+
public void runForever() throws InterruptedException {
77+
Thread.sleep(924982347);
78+
}
79+
6780
/**
6881
* Verify storage profiles are synced from hub bookmark.
6982
*/
@@ -246,13 +259,25 @@ public void test03AddVault(final HubTestConfig config) throws Exception {
246259
assertFalse(vaultRegistry.isEmpty());
247260
assertEquals(1, vaultRegistry.size());
248261

249-
// TODO WiP trying to guide AbstractVault.encrypt() -> CryptoDirectoryV7Provider.toEncrypted(final Session<?> session, final String directoryId, final Path directory) -> do we need to write own CryptoDirectory?
250262
final Path bucket = new Path(vaultBookmark.getDefaultPath(), EnumSet.of(Path.Type.directory, Path.Type.volume, Path.Type.vault));
251263
assertNotSame(Vault.DISABLED, vaultRegistry.find(session, bucket));
252264
{
253265
final AttributedList<Path> list = session.getFeature(ListService.class).list(bucket, new DisabledListProgressListener());
254266
assertTrue(list.isEmpty());
255267
}
268+
{
269+
final Path home = vaultRegistry.find(session, bucket).getHome();
270+
Path file = new Path(home, "gugus.txt", EnumSet.of(AbstractPath.Type.file));
271+
byte[] content = RandomUtils.nextBytes(234);
272+
TransferStatus transferStatus = new TransferStatus().withLength(content.length);
273+
transferStatus.setChecksum(session.getFeature(Write.class).checksum(file, transferStatus).compute(new ByteArrayInputStream(content), transferStatus));
274+
session.getFeature(Bulk.class).pre(Transfer.Type.upload, Collections.singletonMap(new TransferItem(file), transferStatus), new DisabledConnectionCallback());
275+
StatusOutputStream<?> out = session.getFeature(Write.class).write(file, transferStatus, new DisabledConnectionCallback());
276+
IOUtils.copyLarge(new ByteArrayInputStream(content), out);
277+
out.close();
278+
final AttributedList<Path> list = session.getFeature(ListService.class).list(bucket, new DisabledListProgressListener());
279+
assertFalse(list.isEmpty());
280+
}
256281

257282
// raw listing encrypted file names
258283
vaultRegistry.close(bucket);

hub/src/test/java/ch/iterate/hub/core/HubSynchronizeTest.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
import java.util.stream.Stream;
1414

15-
import ch.iterate.hub.testsetup.HubTestSetupDockerExtension;
16-
1715
import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS;
1816

17+
import ch.iterate.hub.testsetup.HubTestSetupDockerExtension;
18+
1919
/**
2020
* Test synchronization of profiles, adding profiles and adding vaults.
2121
* Same local context (profiles, hub host collection) shared across storage profile and tests.
@@ -31,6 +31,15 @@ private Stream<Arguments> arguments() {
3131
}
3232
}
3333

34+
@Nested
35+
@TestInstance(PER_CLASS)
36+
@Disabled("run standalone against already running hub started by runForever test.")
37+
public class PUnattendedMinio extends AbstractHubSynchronizeTest {
38+
private Stream<Arguments> arguments() {
39+
return Stream.of(minioStaticUnattendedLocalOnly, minioSTSUnattendedLocalOnly);
40+
}
41+
}
42+
3443
@Nested
3544
@ExtendWith({HubTestSetupDockerExtension.UnattendedLocalKeycloakDev.class})
3645
@TestInstance(PER_CLASS)

0 commit comments

Comments
 (0)