Skip to content

Commit e5f1fd2

Browse files
committed
Add encrypted file upload to test03AddVault.
1 parent e864c20 commit e5f1fd2

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

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

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,36 @@
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;
10+
import ch.cyberduck.core.features.Touch;
911
import ch.cyberduck.core.features.Vault;
12+
import ch.cyberduck.core.features.Write;
13+
import ch.cyberduck.core.io.ChecksumComputeFactory;
14+
import ch.cyberduck.core.io.HashAlgorithm;
15+
import ch.cyberduck.core.io.StatusOutputStream;
1016
import ch.cyberduck.core.preferences.PreferencesFactory;
1117
import ch.cyberduck.core.proxy.DisabledProxyFinder;
1218
import ch.cyberduck.core.ssl.DefaultX509KeyManager;
1319
import ch.cyberduck.core.ssl.DisabledX509TrustManager;
20+
import ch.cyberduck.core.transfer.Transfer;
21+
import ch.cyberduck.core.transfer.TransferItem;
22+
import ch.cyberduck.core.transfer.TransferStatus;
1423
import ch.cyberduck.core.vault.DefaultVaultRegistry;
1524

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-
25+
import org.apache.commons.io.IOUtils;
26+
import org.apache.commons.lang3.RandomUtils;
2627
import org.apache.commons.lang3.StringUtils;
2728
import org.apache.logging.log4j.LogManager;
2829
import org.apache.logging.log4j.Logger;
2930
import org.junit.jupiter.api.Assertions;
31+
import org.junit.jupiter.api.Disabled;
32+
import org.junit.jupiter.api.Test;
3033
import org.junit.jupiter.params.ParameterizedTest;
3134
import org.openapitools.jackson.nullable.JsonNullableModule;
3235

36+
import java.io.ByteArrayInputStream;
37+
import java.util.Collections;
3338
import java.util.EnumSet;
3439
import java.util.List;
3540
import java.util.UUID;
@@ -55,12 +60,24 @@
5560
import com.fasterxml.jackson.annotation.JsonInclude;
5661
import com.fasterxml.jackson.databind.ObjectMapper;
5762

63+
import org.testcontainers.shaded.org.apache.commons.io.input.NullInputStream;
64+
5865
import static ch.iterate.hub.testsetup.HubTestUtilities.getAdminApiClient;
5966
import static org.junit.jupiter.api.Assertions.*;
6067

6168
public abstract class AbstractHubSynchronizeTest extends AbstractHubTest {
6269
private static final Logger log = LogManager.getLogger(AbstractHubSynchronizeTest.class.getName());
6370

71+
/**
72+
* Use to start unattended setup and then run
73+
* @throws InterruptedException
74+
*/
75+
@Test
76+
@Disabled
77+
public void runForever() throws InterruptedException {
78+
Thread.sleep(924982347);
79+
}
80+
6481
/**
6582
* Verify storage profiles are synced from hub bookmark.
6683
*/
@@ -240,13 +257,25 @@ public void test03AddVault(final HubTestConfig config) throws Exception {
240257
assertFalse(vaultRegistry.isEmpty());
241258
assertEquals(1, vaultRegistry.size());
242259

243-
// 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?
244260
final Path bucket = new Path(vaultBookmark.getDefaultPath(), EnumSet.of(Path.Type.directory, Path.Type.volume, Path.Type.vault));
245261
assertNotSame(Vault.DISABLED, vaultRegistry.find(session, bucket));
246262
{
247263
final AttributedList<Path> list = session.getFeature(ListService.class).list(bucket, new DisabledListProgressListener());
248264
assertTrue(list.isEmpty());
249265
}
266+
{
267+
final Path home = vaultRegistry.find(session, bucket).getHome();
268+
Path file = new Path(home, "gugus.txt", EnumSet.of(AbstractPath.Type.file));
269+
byte[] content = RandomUtils.nextBytes(234);
270+
TransferStatus transferStatus = new TransferStatus().withLength(content.length);
271+
transferStatus.setChecksum(session.getFeature(Write.class).checksum(file, transferStatus).compute(new ByteArrayInputStream(content), transferStatus));
272+
session.getFeature(Bulk.class).pre(Transfer.Type.upload, Collections.singletonMap(new TransferItem(file), transferStatus), new DisabledConnectionCallback());
273+
StatusOutputStream<?> out = session.getFeature(Write.class).write(file, transferStatus, new DisabledConnectionCallback());
274+
IOUtils.copyLarge(new ByteArrayInputStream(content), out);
275+
out.close();
276+
final AttributedList<Path> list = session.getFeature(ListService.class).list(bucket, new DisabledListProgressListener());
277+
assertFalse(list.isEmpty());
278+
}
250279

251280
// raw listing encrypted file names
252281
vaultRegistry.close(bucket);

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)