public async Task TestAddEntry() { var currentPath = Path.Combine(Path.GetTempPath(), "SavedDatabase.kdbx"); var newEntry = new EntryEntity { Name = "New Entry Test" }; var originalFile = await _fileProxy.OpenBinaryFile(Path.Combine(Directory.GetCurrentDirectory(), "Data", "TestDatabase.kdbx")); var currentFile = await _fileProxy.OpenBinaryFile(currentPath); await _database.Open(originalFile, _credentials); await _database.AddEntry(_database.RootGroupId, newEntry.Id); var result = await _database.SaveDatabase(currentFile); await _fileProxy.WriteBinaryContentsToFile(currentPath, result); _database.CloseDatabase(); await _database.Open(currentFile, _credentials); var rootGroup = _database.GetGroup(_database.RootGroupId); Assert.That(newEntry.Id, Is.Not.Empty); Assert.That(rootGroup.Entries.Count, Is.EqualTo(3)); Assert.That(rootGroup.Entries.Last().Name, Is.EqualTo("New Entry Test")); }
public async Task Handle(AddEntryCommand message) { if (!_database.IsOpen) { throw new DatabaseClosedException(); } await _database.AddEntry(message.ParentGroupId, message.EntryId); }
public async Task Handle(DeleteEntryCommand message) { if (!_database.IsOpen) { throw new DatabaseClosedException(); } if (_database.IsRecycleBinEnabled && (string.IsNullOrEmpty(_database.RecycleBinId) || _database.RecycleBinId.Equals(Constants.EmptyId))) { _database.CreateGroup(_database.RootGroupId, message.RecycleBinName, true); } if (!_database.IsRecycleBinEnabled || message.ParentGroupId.Equals(_database.RecycleBinId)) { _database.DeleteEntity(message.EntryId); } else { await _database.AddEntry(_database.RecycleBinId, message.EntryId); } await _database.RemoveEntry(message.ParentGroupId, message.EntryId); }