예제 #1
0
        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"));
        }
예제 #2
0
            public async Task Handle(AddEntryCommand message)
            {
                if (!_database.IsOpen)
                {
                    throw new DatabaseClosedException();
                }

                await _database.AddEntry(message.ParentGroupId, message.EntryId);
            }
예제 #3
0
            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);
            }