use of org.syncany.tests.util.TestClient in project syncany by syncany.
the class RestoreFileScenarioTest method testRestoreDeletedFileWithTargetFile.
@Test
public void testRestoreDeletedFileWithTargetFile() throws Exception {
// Setup
File tempDir = TestFileUtil.createTempDirectoryInSystemTemp();
TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
TestClient clientA = new TestClient("A", testConnection);
java.sql.Connection databaseConnectionA = DatabaseConnectionFactory.createConnection(clientA.getDatabaseFile(), false);
// A new/up
clientA.createNewFile("A-original");
clientA.upWithForceChecksum();
String originalFileHistoryStr = TestSqlUtil.runSqlSelect("select filehistory_id from fileversion", databaseConnectionA);
assertNotNull(originalFileHistoryStr);
FileHistoryId originalFileHistoryId = FileHistoryId.parseFileId(originalFileHistoryStr);
// A "delete"
File deletedFile = new File(tempDir, "A-original-DELETED");
FileUtils.moveFile(clientA.getLocalFile("A-original"), deletedFile);
clientA.upWithForceChecksum();
// A restore
RestoreOperationOptions operationOptions = new RestoreOperationOptions();
operationOptions.setFileHistoryId(originalFileHistoryId);
operationOptions.setFileVersion(1);
operationOptions.setRelativeTargetPath("restored-file");
clientA.restore(operationOptions);
assertTrue(clientA.getLocalFile("restored-file").exists());
assertEquals(StringUtil.toHex(TestFileUtil.createChecksum(deletedFile)), StringUtil.toHex(TestFileUtil.createChecksum(clientA.getLocalFile("restored-file"))));
assertEquals(deletedFile.lastModified(), clientA.getLocalFile("restored-file").lastModified());
assertEquals(deletedFile.length(), clientA.getLocalFile("restored-file").length());
// Tear down
clientA.deleteTestData();
TestFileUtil.deleteDirectory(tempDir);
}
use of org.syncany.tests.util.TestClient in project syncany by syncany.
the class EmptyFileScenarioTest method testEmptyFileCreateAndSync.
@Test
public void testEmptyFileCreateAndSync() throws Exception {
// Setup
TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
TestClient clientA = new TestClient("A", testConnection);
TestClient clientB = new TestClient("B", testConnection);
// Run
clientA.createNewFile("A-file1.jpg", 0);
clientA.up();
clientB.down();
assertFileListEquals(clientA.getLocalFilesExcludeLockedAndNoRead(), clientB.getLocalFilesExcludeLockedAndNoRead());
assertSqlDatabaseEquals(clientA.getDatabaseFile(), clientB.getDatabaseFile());
clientB.createNewFile("B-file2", 0);
clientB.moveFile("A-file1.jpg", "B-file1-moved");
clientB.up();
SqlDatabase database = clientB.loadLocalDatabase();
DatabaseVersionHeader lastDatabaseVersionHeaderBeforeUp = database.getLastDatabaseVersionHeader();
// double-up, has caused problems
clientB.up();
DatabaseVersionHeader lastDatabaseVersionHeaderAfterUp = database.getLastDatabaseVersionHeader();
assertEquals("Nothing changed. Local database file should not change.", lastDatabaseVersionHeaderBeforeUp, lastDatabaseVersionHeaderAfterUp);
clientA.down();
assertFileListEquals(clientA.getLocalFilesExcludeLockedAndNoRead(), clientB.getLocalFilesExcludeLockedAndNoRead());
assertSqlDatabaseEquals(clientA.getDatabaseFile(), clientB.getDatabaseFile());
Map<String, File> beforeSyncDownFileList = clientB.getLocalFilesExcludeLockedAndNoRead();
// double-down, has caused problems
clientA.down();
assertFileListEquals("No change in file lists expected. Nothing changed", beforeSyncDownFileList, clientA.getLocalFilesExcludeLockedAndNoRead());
// Tear down
clientA.deleteTestData();
clientB.deleteTestData();
}
use of org.syncany.tests.util.TestClient in project syncany by syncany.
the class FileLockedScenarioTest method testPermissionDeniedNotReadable.
@Test
public void testPermissionDeniedNotReadable() throws Exception {
if (EnvironmentUtil.isWindows()) {
// Not possible in windows
return;
}
// Setup
TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
TestClient clientA = new TestClient("A", testConnection);
// Run
File noReadPermissionFile = clientA.createNewFile("no-read-permission-file");
Path filePath = Paths.get(noReadPermissionFile.getAbsolutePath());
Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.OTHERS_READ);
Files.setPosixFilePermissions(filePath, perms);
runUpAndTestForConsistentDatabase(testConnection, clientA);
// Tear down
clientA.deleteTestData();
}
use of org.syncany.tests.util.TestClient in project syncany by syncany.
the class FileLockedScenarioTest method testLockUnlockFile.
@Test
public void testLockUnlockFile() throws Exception {
final TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
final TestClient clientA = new TestClient("A", testConnection);
final TestClient clientB = new TestClient("B", testConnection);
ClientActions.run(clientA, null, new CreateFileTree(), new Executable() {
@Override
public void execute() throws Exception {
clientA.upWithForceChecksum();
clientB.down();
assertFileListEquals(clientA.getLocalFilesExcludeLockedAndNoRead(), clientB.getLocalFilesExcludeLockedAndNoRead());
assertSqlDatabaseEquals(clientA.getDatabaseFile(), clientB.getDatabaseFile());
}
});
ClientActions.run(clientA, null, new LockFile(), new Executable() {
@Override
public void execute() throws Exception {
clientA.upWithForceChecksum();
clientB.down();
assertEquals(clientA.getLocalFilesExcludeLockedAndNoRead().size(), clientB.getLocalFilesExcludeLockedAndNoRead().size() - 1);
}
});
ClientActions.run(clientA, null, new UnlockFile(), new Executable() {
@Override
public void execute() throws Exception {
clientA.upWithForceChecksum();
clientB.down();
assertFileListEquals(clientA.getLocalFilesExcludeLockedAndNoRead(), clientB.getLocalFilesExcludeLockedAndNoRead());
assertSqlDatabaseEquals(clientA.getDatabaseFile(), clientB.getDatabaseFile());
}
});
clientA.deleteTestData();
clientB.deleteTestData();
}
use of org.syncany.tests.util.TestClient in project syncany by syncany.
the class IdenticalFileMoveScenarioTest method testIdenticalFileMove.
@Test
public void testIdenticalFileMove() throws Exception {
// Setup
TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
TestClient clientA = new TestClient("A", testConnection);
// Create folder structure
clientA.createNewFolder("folder");
clientA.createNewFolder("folder/subfolder1");
clientA.createNewFolder("folder/subfolder2");
// Create identical files
clientA.createNewFile("folder/subfolder1/A-file1.jpg", 100);
clientA.copyFile("folder/subfolder1/A-file1.jpg", "folder/subfolder2/A-file1.jpg");
clientA.up();
// Move the two identical files
clientA.moveFile("folder", "moved_folder");
clientA.up();
// A just upped, so there should not be changes.
assertFalse(clientA.status().getChangeSet().hasChanges());
// Check if the file histories were based on the correct originals
LsOperationOptions options = new LsOperationOptions();
options.setFetchHistories(true);
options.setPathExpression("moved_folder/subfolder1/");
LsOperationResult lsOperationResult = clientA.ls(options);
for (PartialFileHistory fileHistory : lsOperationResult.getFileVersions().values()) {
assertTrue(fileHistory.getFileVersion(2).getPath().endsWith(fileHistory.getFileVersion(1).getPath()));
}
options.setPathExpression("moved_folder/subfolder2/");
lsOperationResult = clientA.ls(options);
for (PartialFileHistory fileHistory : lsOperationResult.getFileVersions().values()) {
assertTrue(fileHistory.getFileVersion(2).getPath().endsWith(fileHistory.getFileVersion(1).getPath()));
}
// Tear down
clientA.deleteTestData();
}
Aggregations