use of org.syncany.config.to.RepoTO in project syncany by syncany.
the class ConfigTest method testConfigMachineNameInvalidNull.
@Test
public void testConfigMachineNameInvalidNull() throws Exception {
File localDir = new File("/some/folder");
ConfigTO configTO = new ConfigTO();
RepoTO repoTO = new RepoTO();
// <<< Invalid
configTO.setMachineName(null);
// Run!
try {
new Config(localDir, configTO, repoTO);
fail("Machine name should not have been accepted.");
} catch (ConfigException e) {
TestAssertUtil.assertErrorStackTraceContains("Machine name", e);
}
}
use of org.syncany.config.to.RepoTO in project syncany by syncany.
the class ConfigTest method testConfigValid.
@Test
public void testConfigValid() throws Exception {
// Setup
File localDir = new File("/some/folder");
ConfigTO configTO = new ConfigTO();
RepoTO repoTO = new RepoTO();
// <<< valid
configTO.setMachineName("somevalidmachinename");
// <<< valid
repoTO.setChunkerTO(TestConfigUtil.createFixedChunkerTO());
// <<< valid
repoTO.setMultiChunker(TestConfigUtil.createZipMultiChunkerTO());
// <<< valid
repoTO.setRepoId(new byte[] { 0x01, 0x02 });
// <<< valid
repoTO.setTransformers(null);
// Run!
Config config = new Config(localDir, configTO, repoTO);
// Test
assertEquals("/some/folder/.syncany", config.getAppDir().getAbsolutePath());
assertEquals("/some/folder/.syncany/cache", config.getCacheDir().getAbsolutePath());
assertEquals("/some/folder/.syncany/db", config.getDatabaseDir().getAbsolutePath());
assertEquals("/some/folder/.syncany/db/local.db", config.getDatabaseFile().getAbsolutePath());
assertNotNull(config.getChunker());
assertEquals("FixedChunker", config.getChunker().getClass().getSimpleName());
assertEquals("SHA1", config.getChunker().getChecksumAlgorithm());
assertNotNull(config.getMultiChunker());
assertEquals("ZipMultiChunker", config.getMultiChunker().getClass().getSimpleName());
assertNotNull(config.getTransformer());
assertEquals("NoTransformer", config.getTransformer().getClass().getSimpleName());
assertNotNull(config.getCache());
}
use of org.syncany.config.to.RepoTO in project syncany by syncany.
the class TestConfigUtil method createTestLocalConfig.
public static Config createTestLocalConfig(String machineName, TransferSettings connection) throws Exception {
File tempLocalDir = TestFileUtil.createTempDirectoryInSystemTemp(createUniqueName("client-" + machineName, connection));
tempLocalDir.mkdirs();
RepoTO repoTO = createRepoTO();
// Create config TO
ConfigTO configTO = new ConfigTO();
configTO.setMachineName(machineName + CipherUtil.createRandomAlphabeticString(20));
// Get Masterkey
SaltedSecretKey masterKey = getMasterKey();
configTO.setMasterKey(masterKey);
LocalTransferSettings localConnection = (LocalTransferSettings) connection;
// Create connection TO
Map<String, String> localConnectionSettings = new HashMap<String, String>();
localConnectionSettings.put("path", localConnection.getPath().getAbsolutePath());
configTO.setTransferSettings(connection);
// Create
Config config = new Config(tempLocalDir, configTO, repoTO);
config.setConnection(connection);
config.getAppDir().mkdirs();
config.getCacheDir().mkdirs();
config.getDatabaseDir().mkdirs();
config.getLogDir().mkdirs();
config.getStateDir().mkdirs();
// Write to config folder (required for some tests)
new Persister().write(configTO, new File(config.getAppDir() + "/" + Config.FILE_CONFIG));
new Persister().write(repoTO, new File(config.getAppDir() + "/" + Config.FILE_REPO));
return config;
}
use of org.syncany.config.to.RepoTO in project syncany by syncany.
the class InitCommand method parseOptions.
@Override
public InitOperationOptions parseOptions(String[] operationArguments) throws Exception {
InitOperationOptions operationOptions = new InitOperationOptions();
OptionParser parser = new OptionParser();
OptionSpec<Void> optionNoCreateTarget = parser.acceptsAll(asList("T", "no-create-target"));
OptionSpec<Void> optionAdvanced = parser.acceptsAll(asList("a", "advanced"));
OptionSpec<Void> optionNoCompression = parser.acceptsAll(asList("G", "no-compression"));
OptionSpec<Void> optionNoEncryption = parser.acceptsAll(asList("E", "no-encryption"));
OptionSpec<String> optionPlugin = parser.acceptsAll(asList("P", "plugin")).withRequiredArg();
OptionSpec<String> optionPluginOpts = parser.acceptsAll(asList("o", "plugin-option")).withRequiredArg();
OptionSpec<Void> optionAddDaemon = parser.acceptsAll(asList("n", "add-daemon"));
OptionSpec<Void> optionShortUrl = parser.acceptsAll(asList("s", "short"));
OptionSpec<Void> optionHeadlessMode = parser.acceptsAll(asList("l", "headless"));
OptionSpec<String> optionPassword = parser.acceptsAll(asList("password")).withRequiredArg();
OptionSet options = parser.parse(operationArguments);
// Set interactivity mode
isInteractive = !options.has(optionPlugin);
// Set headless mode
isHeadless = options.has(optionHeadlessMode);
// Ask or set transfer settings
TransferSettings transferSettings = createTransferSettingsFromOptions(options, optionPlugin, optionPluginOpts);
// Some misc settings
boolean createTargetPath = !options.has(optionNoCreateTarget);
boolean advancedModeEnabled = options.has(optionAdvanced);
boolean encryptionEnabled = !options.has(optionNoEncryption);
boolean compressionEnabled = !options.has(optionNoCompression);
// Cipher specs: --no-encryption, --advanced
List<CipherSpec> cipherSpecs = getCipherSpecs(encryptionEnabled, advancedModeEnabled);
// Compression: --no-compression
// DefaultRepoTOFactory also creates default chunkers
RepoTOFactory repoTOFactory = new DefaultRepoTOFactory(compressionEnabled, cipherSpecs);
// Genlink options: --short
GenlinkOperationOptions genlinkOptions = new GenlinkOperationOptions();
genlinkOptions.setShortUrl(options.has(optionShortUrl));
// Set repo password
String password = validateAndGetPassword(options, optionNoEncryption, optionPassword);
operationOptions.setPassword(password);
// Create configTO and repoTO
ConfigTO configTO = createConfigTO(transferSettings);
RepoTO repoTO = repoTOFactory.createRepoTO();
operationOptions.setLocalDir(localDir);
operationOptions.setConfigTO(configTO);
operationOptions.setRepoTO(repoTO);
operationOptions.setCreateTarget(createTargetPath);
operationOptions.setEncryptionEnabled(encryptionEnabled);
operationOptions.setCipherSpecs(cipherSpecs);
operationOptions.setDaemon(options.has(optionAddDaemon));
operationOptions.setGenlinkOptions(genlinkOptions);
return operationOptions;
}
use of org.syncany.config.to.RepoTO in project syncany by syncany.
the class ConfigHelperTest method testConfigHelperLoadRepoTO.
@Test
public void testConfigHelperLoadRepoTO() throws Exception {
// Setup
Config testConfig = TestConfigUtil.createTestLocalConfig();
// Run
ConfigTO loadedConfigTO = ConfigHelper.loadConfigTO(testConfig.getLocalDir());
RepoTO repoConfigTO = ConfigHelper.loadRepoTO(testConfig.getLocalDir(), loadedConfigTO);
// Test
assertNotNull(repoConfigTO);
assertNotNull(repoConfigTO.getChunkerTO());
assertNotNull(repoConfigTO.getMultiChunker());
assertNotNull(repoConfigTO.getRepoId());
if (TestConfigUtil.getCrypto()) {
assertNotNull(repoConfigTO.getTransformers());
assertEquals(2, repoConfigTO.getTransformers().size());
assertEquals("gzip", repoConfigTO.getTransformers().get(0).getType());
assertEquals("cipher", repoConfigTO.getTransformers().get(1).getType());
} else {
assertNull(repoConfigTO.getTransformers());
}
assertEquals("fixed", repoConfigTO.getChunkerTO().getType());
assertEquals(1, repoConfigTO.getChunkerTO().getSettings().size());
assertEquals("zip", repoConfigTO.getMultiChunker().getType());
assertEquals(1, repoConfigTO.getMultiChunker().getSettings().size());
assertEquals("010203", StringUtil.toHex(repoConfigTO.getRepoId()));
// Tear down
TestConfigUtil.deleteTestLocalConfigAndData(testConfig);
}
Aggregations