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); }
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); }
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(); }