Test content of written vault config as well

While creating a vault, check also the content for the
vault.cryptomator file.
This commit is contained in:
Julian Raufelder 2021-04-09 09:24:36 +02:00
parent f6c8554779
commit a4762fb32a
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D

View File

@ -37,6 +37,7 @@ class MasterkeyCryptoCloudProviderTest {
private CloudContentRepository cloudContentRepository; private CloudContentRepository cloudContentRepository;
private CryptoCloudContentRepositoryFactory cryptoCloudContentRepositoryFactory; private CryptoCloudContentRepositoryFactory cryptoCloudContentRepositoryFactory;
private Vault vault; private Vault vault;
private VaultConfig.VaultConfigBuilder vaultConfigBuilder;
private Cryptor cryptor; private Cryptor cryptor;
private FileNameCryptor fileNameCryptor; private FileNameCryptor fileNameCryptor;
@ -45,12 +46,13 @@ class MasterkeyCryptoCloudProviderTest {
private MasterkeyCryptoCloudProvider inTest; private MasterkeyCryptoCloudProvider inTest;
@BeforeEach @BeforeEach
void setUp() { public void setUp() {
context = Mockito.mock(Context.class); context = Mockito.mock(Context.class);
cloud = Mockito.mock(Cloud.class); cloud = Mockito.mock(Cloud.class);
cloudContentRepository = Mockito.mock(CloudContentRepository.class); cloudContentRepository = Mockito.mock(CloudContentRepository.class);
cryptoCloudContentRepositoryFactory = Mockito.mock(CryptoCloudContentRepositoryFactory.class); cryptoCloudContentRepositoryFactory = Mockito.mock(CryptoCloudContentRepositoryFactory.class);
vault = Mockito.mock(Vault.class); vault = Mockito.mock(Vault.class);
vaultConfigBuilder = VaultConfig.createVaultConfig().id("");
cryptor = Mockito.mock(Cryptor.class); cryptor = Mockito.mock(Cryptor.class);
fileNameCryptor = Mockito.mock(FileNameCryptor.class); fileNameCryptor = Mockito.mock(FileNameCryptor.class);
@ -68,6 +70,7 @@ class MasterkeyCryptoCloudProviderTest {
@DisplayName("create(\"/foo, foo\")") @DisplayName("create(\"/foo, foo\")")
public void testCreateVault() throws BackendException { public void testCreateVault() throws BackendException {
String masterkey = "{ \"version\": 999, \"scryptSalt\": \"AAAAAAAAAAA=\", \"scryptCostParam\": 32768, \"scryptBlockSize\": 8, \"primaryMasterKey\": \"D2kc+xBoAcVY+M7s74YBEy6l7ga2+Nz+HS5o0TQY3JMW1uQ5jTlLIQ==\", \"hmacMasterKey\": \"D2kc+xBoAcVY+M7s74YBEy6l7ga2+Nz+HS5o0TQY3JMW1uQ5jTlLIQ==\", \"versionMac\": \"trDKXqDhu94/VPuoWaQGBm8hwSPYc0D9t6DRRxKZ65k=\"}"; String masterkey = "{ \"version\": 999, \"scryptSalt\": \"AAAAAAAAAAA=\", \"scryptCostParam\": 32768, \"scryptBlockSize\": 8, \"primaryMasterKey\": \"D2kc+xBoAcVY+M7s74YBEy6l7ga2+Nz+HS5o0TQY3JMW1uQ5jTlLIQ==\", \"hmacMasterKey\": \"D2kc+xBoAcVY+M7s74YBEy6l7ga2+Nz+HS5o0TQY3JMW1uQ5jTlLIQ==\", \"versionMac\": \"trDKXqDhu94/VPuoWaQGBm8hwSPYc0D9t6DRRxKZ65k=\"}";
String vaultConfig = "eyJraWQiOiJtYXN0ZXJrZXlmaWxlOm1hc3RlcmtleS5jcnlwdG9tYXRvciIsImFsZyI6IkhTNTEyIn0.eyJtYXhGaWxlbmFtZUxlbiI6MjIwLCJmb3JtYXQiOjgsImNpcGhlckNvbWJvIjoiU0lWX0NUUk1BQyJ9.umiAcGObWuVISugrQu16hznDHIFM7moD1ukA1r5V1DRA0GjHQk1p6S9hkL0PaMD7xl04jSttMRalOYU1sg4wqQ";
TestFolder rootFolder = new RootTestFolder(cloud); TestFolder rootFolder = new RootTestFolder(cloud);
TestFolder foo = new TestFolder(rootFolder, "foo", "/foo"); TestFolder foo = new TestFolder(rootFolder, "foo", "/foo");
@ -85,11 +88,15 @@ class MasterkeyCryptoCloudProviderTest {
return invocationOnMock.getArgument(0); return invocationOnMock.getArgument(0);
}); });
// 2. initialize vault
Mockito.when(cloudContentRepository.write(Mockito.eq(vaultFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong())).thenAnswer(invocationOnMock -> {
DataSource in = invocationOnMock.getArgument(1);
String vaultConfigFileContent = new BufferedReader(new InputStreamReader(in.open(context), StandardCharsets.UTF_8)).lines().collect(Collectors.joining());
assertThat(vaultConfigFileContent, is(vaultConfig));
return invocationOnMock.getArgument(0);
});
// 2. initialize vault: // 3. create root folder
Mockito.when(cloudContentRepository.write(Mockito.eq(vaultFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong())).thenReturn(vaultFile);
// 3. create root folder:
String rootDirHash = "KG6TFDGKXGZEGWRZOGTDFDF4YEGAZO6Q"; String rootDirHash = "KG6TFDGKXGZEGWRZOGTDFDF4YEGAZO6Q";
TestFolder dFolder = new TestFolder(foo, "d", "/foo/" + DATA_DIR_NAME); TestFolder dFolder = new TestFolder(foo, "d", "/foo/" + DATA_DIR_NAME);
@ -108,7 +115,7 @@ class MasterkeyCryptoCloudProviderTest {
Mockito.when(cloudContentRepository.folder(lvl1Dir, lvl2Dir.getName())).thenReturn(lvl2Dir); Mockito.when(cloudContentRepository.folder(lvl1Dir, lvl2Dir.getName())).thenReturn(lvl2Dir);
Mockito.when(cloudContentRepository.create(lvl2Dir)).thenReturn(lvl2Dir); Mockito.when(cloudContentRepository.create(lvl2Dir)).thenReturn(lvl2Dir);
inTest.create(foo, "foo"); inTest.create(foo, "foo", vaultConfigBuilder);
Mockito.verify(cloudContentRepository).write(Mockito.eq(masterKeyFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong()); Mockito.verify(cloudContentRepository).write(Mockito.eq(masterKeyFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong());
Mockito.verify(cloudContentRepository).write(Mockito.eq(vaultFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong()); Mockito.verify(cloudContentRepository).write(Mockito.eq(vaultFile), Mockito.any(DataSource.class), Mockito.eq(NO_OP_PROGRESS_AWARE), Mockito.eq(false), Mockito.anyLong());