示例#1
0
        private void SetupDatabaseAndTree()
        {
            //standard for all tests is an standard database with the rootGroup and some PwEntries
            m_database = TestHelper.CreateDatabase();

            m_treeManager = new TreeManagerAccessor();
            m_syncManager = new SyncMasterAccessor();
            m_syncManager.Initialize(m_database);
            m_treeManager.Initialize(m_database);
        }
        public void ShouldHandleExportAndImportOfDifferentDatabasesSuccessfully()
        {
            var exportKeeShare = new KeeShare.KeeShare();
            var exportDatabase = TestHelper.CreateDatabase();

            exportKeeShare.Initialize(exportDatabase);

            var treeManagerAccessor = new TreeManagerAccessor();

            treeManagerAccessor.Initialize(exportDatabase);
            treeManagerAccessor.CreateNewUser("MrX");
            exportKeeShare.EnsureValidTree(exportDatabase);

            var userNode        = TestHelper.GetUserRootNodeByNameFor(exportDatabase, "MrX");
            var userHome        = TestHelper.GetUserHomeNodeByNameFor(exportDatabase, "MrX");
            var exportRootEntry = new PwEntry(true, true);

            exportRootEntry.SetTitle("ExportRootEntry");
            exportDatabase.RootGroup.AddEntry(exportRootEntry, true);

            var exportPath = GetTestPath();
            var exportFile = exportPath + SyncSource.FileNameFor(userNode) + SyncExporter.FileExtension;

            exportKeeShare.AddExportPath(exportPath);
            var exportTarget = exportDatabase.GetExportGroup().Groups.GetAt(0);

            exportTarget.AddEntry(userNode.CreateProxyNode(), true);

            var exportHomeEntry = new PwEntry(true, true);

            exportHomeEntry.SetTitle("ExportHomeEntry");
            userHome.AddEntry(exportHomeEntry, true);
            exportDatabase.RootGroup.AddEntry(userNode.CreateProxyNode(), true);

            var importDatabase = TestHelper.CreateDatabase();
            var importKeeShare = new KeeShare.KeeShare();

            importKeeShare.Initialize(importDatabase);

            exportKeeShare.Export();

            importKeeShare.AddImportPath(exportFile);
            var importGroup  = importDatabase.GetImportGroup().Groups.GetAt(0);
            var importSource = importGroup.Entries.GetAt(0);

            importSource.SetPassword(userNode.Strings.ReadSafe(KeeShare.KeeShare.PasswordField));

            importKeeShare.EnsureValidTree(importDatabase);

            Assert.AreEqual(1, importDatabase.RootGroup.GetEntries(true).CloneShallowToList().Count(e => e.GetTitle() == "ExportRootEntry"));
            Assert.AreEqual(1, importDatabase.RootGroup.GetEntries(true).CloneShallowToList().Count(e => e.GetTitle() == "ExportHomeEntry"));
        }
        public void ShouldHandleExportAndImportOfDifferentDatabasesSuccessfully()
        {
            var exportKeeShare = new KeeShare.KeeShare();
            var exportDatabase = TestHelper.CreateDatabase();
            exportKeeShare.Initialize(exportDatabase);

            var treeManagerAccessor = new TreeManagerAccessor();
            treeManagerAccessor.Initialize(exportDatabase);
            treeManagerAccessor.CreateNewUser("MrX");
            exportKeeShare.EnsureValidTree(exportDatabase);

            var userNode = TestHelper.GetUserRootNodeByNameFor(exportDatabase, "MrX");
            var userHome = TestHelper.GetUserHomeNodeByNameFor(exportDatabase, "MrX");
            var exportRootEntry = new PwEntry(true, true);
            exportRootEntry.SetTitle("ExportRootEntry");
            exportDatabase.RootGroup.AddEntry(exportRootEntry, true);

            var exportPath = GetTestPath();
            var exportFile = exportPath + SyncSource.FileNameFor(userNode) + SyncExporter.FileExtension;
            exportKeeShare.AddExportPath(exportPath);
            var exportTarget = exportDatabase.GetExportGroup().Groups.GetAt(0);
            exportTarget.AddEntry(PwNode.CreateProxyNode(userNode), true);

            var exportHomeEntry = new PwEntry(true, true);
            exportHomeEntry.SetTitle("ExportHomeEntry");
            userHome.AddEntry(exportHomeEntry, true);
            exportDatabase.RootGroup.AddEntry(PwNode.CreateProxyNode(userNode), true);

            var importDatabase = TestHelper.CreateDatabase();
            var importKeeShare = new KeeShare.KeeShare();
            importKeeShare.Initialize(importDatabase);

            exportKeeShare.Export();

            importKeeShare.AddImportPath(exportFile);
            var importGroup = importDatabase.GetImportGroup().Groups.GetAt(0);
            var importSource = importGroup.Entries.GetAt(0);
            importSource.SetPassword(userNode.Strings.ReadSafe(KeeShare.KeeShare.PasswordField));

            importKeeShare.EnsureValidTree(importDatabase);

            Assert.AreEqual(1, importDatabase.RootGroup.GetEntries(true).CloneShallowToList().Count(e => e.GetTitle() == "ExportRootEntry"));
            Assert.AreEqual(1, importDatabase.RootGroup.GetEntries(true).CloneShallowToList().Count(e => e.GetTitle() == "ExportHomeEntry"));
        }
        private void SetupDatabaseAndTree()
        {
            //standard for all tests is an standard database with the rootGroup and some PwEntries
            m_database = TestHelper.CreateDatabase();

            m_treeManager = new TreeManagerAccessor();
            m_syncManager = new SyncMasterAccessor();
            m_syncManager.Initialize(m_database);
            m_treeManager.Initialize(m_database);
        }
示例#5
0
        public void ShouldCreateUserManagermentGroups()
        {
            m_treeManager.Initialize(m_database);
            var usersGroup  = TestHelper.GetUsersGroupFor(m_database);
            var groupsGroup = TestHelper.GetGroupsGroupFor(m_database);

            Assert.IsNotNull(usersGroup);
            Assert.AreEqual(KeeShare.KeeShare.UsersGroupName, usersGroup.Name);
            Assert.IsNotNull(groupsGroup);
            Assert.AreEqual(KeeShare.KeeShare.GroupsGroupName, groupsGroup.Name);
        }
示例#6
0
        public void ShouldOnlyExportToCurrentSharedUsers()
        {
            m_treeManager.Initialize(m_database);
            var exportPath = GetTestPath();

            m_syncManager.AddExportPath(exportPath);
            var exportGroup = m_database.GetExportGroup().Groups.GetAt(0);


            m_treeManager.CreateNewUser("Adam");
            m_treeManager.CreateNewUser("Eva");
            var userAdam = TestHelper.GetUserRootNodeByNameFor(m_database, "Adam");
            var userEva  = TestHelper.GetUserRootNodeByNameFor(m_database, "Eva");

            userAdam.SetPassword(STANDARD_PASSWORD);
            userEva.SetPassword(STANDARD_PASSWORD);

            m_database.RootGroup.AddEntry(userAdam.CreateProxyNode(), true);
            m_database.RootGroup.AddEntry(userEva.CreateProxyNode(), true);

            exportGroup.AddEntry(userAdam.CreateProxyNode(), true);
            exportGroup.AddEntry(userEva.CreateProxyNode(), true);
            m_treeManager.CorrectStructure();

            string exportFileAdam = exportPath + SyncSource.FileNameFor(userAdam) + SyncExporter.FileExtension;
            string exportFileEva  = exportPath + SyncSource.FileNameFor(userEva) + SyncExporter.FileExtension;

            Assert.IsFalse(File.Exists(exportFileAdam));
            Assert.IsFalse(File.Exists(exportFileEva));

            m_syncManager.Export();
            // TODO CK: At this point it may be possible that the files are not created - we need to wait for the filesystem to respond - maybe using a delay?
            Assert.IsTrue(File.Exists(exportFileAdam));
            Assert.IsTrue(File.Exists(exportFileEva));

            var homeAdam = TestHelper.GetUserHomeNodeByNameFor(m_database, "Adam");

            homeAdam.ParentGroup.Groups.Remove(homeAdam);
            var trash = m_database.RootGroup.FindGroup(m_database.RecycleBinUuid, true);

            trash.AddGroup(homeAdam, true);
            trash.DeleteAllObjects(m_database);
            //update should delete all references to the non existing user

            m_treeManager.CorrectStructure();

            var changedEntry = m_database.RootGroup.Entries.GetAt(0);

            changedEntry.SetTitle("Changed");
            TestHelper.SimulateTouch(changedEntry);

            m_syncManager.Export();

            TestHelper.DelayAction();

            var deltaDBAdamReexport = new PwDatabase();

            deltaDBAdamReexport.Open(IOConnectionInfo.FromPath(exportFileAdam), m_standardKey, null);
            Assert.AreEqual(Uuid1, deltaDBAdamReexport.RootGroup.Entries.GetAt(0).Uuid);
            Assert.AreNotEqual("Changed", deltaDBAdamReexport.RootGroup.Entries.GetAt(0).GetTitle());
            deltaDBAdamReexport.Close();
            var deltaDBEvaReexport = new PwDatabase();

            deltaDBEvaReexport.Open(IOConnectionInfo.FromPath(exportFileEva), m_standardKey, null);
            Assert.AreEqual(Uuid1, deltaDBEvaReexport.RootGroup.Entries.GetAt(0).Uuid);
            Assert.AreEqual("Changed", deltaDBEvaReexport.RootGroup.Entries.GetAt(0).GetTitle());
            deltaDBEvaReexport.Close();
        }