fixture.addTest('config_global', function() { var units, mod_count; register_unit('unit1', true); var unit1_fname = os.path(global_mod_dir, "unit1" + ".json"); assert.ok(os.path.isfile(unit1_fname), "unit 1 global config"); units = cfg.global.units(); mod_count = 0; assert.ok('unit1' in units, "Unit in config"); units.each(function(){ ++mod_count; }) assert.equal(mod_count, 1, "One unit/member"); register_unit('unit2', true); units = cfg.global.units(); mod_count = 0; var unit2_fname = os.path(global_mod_dir, "unit2" + ".json"); assert.ok(os.path.isfile(unit1_fname), "unit 1 global config"); units.each(function(){ ++mod_count; }) assert.ok('unit2' in units, "Unit2 in config"); assert.equal(mod_count, 2, "One unit/member"); assert.ok(os.path.isfile(unit1_fname), "unit 1 global config"); api.execute({action : "unregister", global : true , unit : "unit1"}); assert.ok(!os.path.exists(unit1_fname), "global config is removed"); });
exports.removeBackups = function(msg, ctx) { var os = require("os"); var home = os.home(); if (!os.path.isDir(home)) error.raise({message: "No home directory " + home}); os.rmtree(os.path(home, ".vault")); };
exports.connect = function(params) { params = params || {}; debug.info((params.reconnect ? "re" : "") + "connect to vault"); if (!(actor_ === undefined || params.reconnect)) { if (params.on_done) params.on_done(); return; } home_ = params.home || os.home(); vault_dir_ = params.vault || os.path(home_, '.vault'); debug.debug("Vault in", vault_dir_, ", Home is", home_); init_actor(params.reconnect); var sync_config = function() { actor().request("sync_config", {} , { on_reply: params.on_done, on_error: params.on_error}); }; var init = function() { var msg = {"user.name" : "Some User", "user.email" : "*****@*****.**"}; actor().request("init" , msg , { on_reply: sync_config, on_error: params.on_error } ); }; actor().request("connect", vault_dir(), {on_reply: init, on_error: error.raise}); if (!params.on_done) { debug.debug("Wait for request to be completed"); actor().wait(); } };
fixture.addTest('simple_blobs', function() { var vault_config; os.rmtree(home); os.mkdir(home); vault_init(); register_unit('unit1', false); vault_config = vault.config().units(); assert.ok('unit1' in vault_config , util.dump('no unit1 in vault config', vault_config)); var unit1_dir = os.path(home, 'unit1'); os.mkdir(unit1_dir); var unit1_blob = os.path(unit1_dir, 'blob1'); os.write_file(unit1_blob, "1\n2\n3\n"); assert.ok(os.path.isdir(unit1_dir), "unit1 is prepared") assert.ok(os.path.isfile(unit1_blob), "unit1 blob is prepared") var is_started = true, is_failed = false; vault.backup(home, {}, function(progress) { switch(progress.status) { case "fail": is_failed = true; break; case "begin": is_started = true; break; default: break; } }); assert.ok(is_started, "backup was not started"); assert.ok(!is_failed, "backup is failed"); assert.ok(os.path.isdir(unit1_dir), "unit1 is still here"); assert.ok(os.path.isfile(unit1_blob), "unit1 blob is still here"); var unit1_vault = vault.unit_path('unit1'); var unit1_vault_path = unit1_vault.bin().absolute; assert.ok(os.path.isdir(unit1_vault_path), "unit1 is in the vault"); var unit1_vault_blob = os.path(unit1_vault_path, 'unit1', 'blob1'); assert.ok(os.path.exists(unit1_vault_blob) , "unit1 blob1 is in the vault"); assert.ok(os.path.isSymLink(unit1_vault_blob) , "unit1 blob1 is symlink"); });
fixture.addTest('config_local', function() { var units, mod_count , vault_config; register_unit('unit1', false); var config_dir = os.path(vault_dir, '.modules'); var config = cfg.system({units_dir: config_dir}); assert.ok(os.path.isfile(config.path('unit1')), "unit1 config file"); vault_config = vault.config().units(); assert.ok('unit1' in vault_config , util.dump('no unit1 in vault config', vault_config)); api.execute({action : "unregister", vault : vault_dir , unit : "unit1"}); vault_config = vault.config().units(); assert.ok(!('unit1' in vault_config) , util.dump('no unit1 in vault config', vault_config)); });
bin_dir : function(home) { return os.path(home, 'Pictures'); }
var assert = require('test'); var util = require('util'); var os = require('os'); var error = require('error'); var debug = require('debug'); //debug.level('debug'); var home = '/tmp/.test-the-vault-431f7f8b665d3cc2a1a4a8c3c74ad5ff'; var vault_dir = os.path(home, '.vault'); var global_mod_dir = os.path(home, '.units'); var vault, api, cfg, unit; var fixture = assert.fixture(); fixture.addSetup(function() { os.path.exists(home) && error.raise({dir : home, msg : "should not exist"}); os.mkdir(home); fixture.addTeardown(function() { if (!fixture.is_failed) os.rmtree(home); }); }); fixture.addTestSetup(function() { api = require('vault/vault'); cfg = require('vault/config'); unit = require('vault/unit'); cfg.global.units_dir = global_mod_dir; os.rmtree(global_mod_dir);
var context = require('vault_test_context'); var vault_dir = context.vault_dir; var home = context.home; var os = require('os'); var api = require('./module1.js'); api.connect({home : home, vault : vault_dir}); var is_failed = false, err, export_ctx, tgt_path, rc = -1, import_ctx; tgt_path = os.path(context.home, "sd"); os.mkdir(tgt_path); // var git_dir = os.path(context.vault_dir, ".git"); // var ftree_git_before_export = get_ftree(git_dir); api.export_import_prepare ({action: "export", path: tgt_path} , {on_done: function(ctx) { export_ctx = ctx; }, on_error: function(e) { is_failed = true; err = e; } }); api.wait(); api.export_import_execute (export_ctx , {on_done: function(ret_rc) { rc = ret_rc; } , on_error: function(e) { is_failed = true; err = e; }}); api.wait();
var cmdline = sys.getopt({ data_dir : { short_ : "d", long_ : "dir", required : true, has_param : true}, bin_dir : { short_ : "b", long_ : "bin-dir", required : true, has_param : true}, home : { short_ : "H", long_ : "home-dir", required : true, has_param : true}, action : { short_ : "a", long_ : "action", required : true, has_param : true} }).parse(qtscript.script.args) var options = cmdline.opts var action = options.action; var src, dst var my = os.path(options.home, 'vcf', 'out', '.') switch (action) { case 'export': print("EXPORT") src = my os.cptree(src, options.data_dir) break; case 'import': print("IMPORT") dst = my os.update_tree(options.data_dir, dst) break; default: error.raise({ msg : "Unknown action", action : action}); break; }