Exemple #1
0
        public async Task TestCreateAndSave()
        {
            var path    = Path.Combine(Path.GetTempPath(), "NewDatabase.kdbx");
            var newFile = await _fileProxy.OpenBinaryFile(path);

            await _database.Create(_credentials, "NewDatabase");

            var result = await _database.SaveDatabase();

            await _fileProxy.WriteBinaryContentsToFile(path, result);

            _database.CloseDatabase();

            Assert.DoesNotThrowAsync(async() => { await _database.Open(newFile, _credentials); });
        }
            public async Task Handle(CreateDatabaseCommand message)
            {
                if (_database.IsDirty)
                {
                    throw new DatabaseOpenException();
                }

                var version = DatabaseVersion.V2;

                switch (message.Version)
                {
                case "4":
                    version = DatabaseVersion.V4;
                    break;

                case "3":
                    version = DatabaseVersion.V3;
                    break;
                }

                await _database.Create(new Credentials
                {
                    KeyFileContents = !string.IsNullOrEmpty(message.KeyFilePath) ? await _file.ReadBinaryFile(message.KeyFilePath) : null,
                    Password        = message.Password
                }, message.Name, version);

                _database.FileAccessToken = message.FilePath;

                if (message.CreateSampleData)
                {
                    var bankingGroup = _database.CreateGroup(_database.RootGroupId, "Banking");
                    bankingGroup.Icon = Icon.Shop;
                    _database.UpdateGroup(bankingGroup);

                    var emailGroup = _database.CreateGroup(_database.RootGroupId, "Email");
                    emailGroup.Icon = Icon.Mail;
                    _database.UpdateGroup(emailGroup);

                    var internetGroup = _database.CreateGroup(_database.RootGroupId, "Internet");
                    internetGroup.Icon = Icon.World;
                    _database.UpdateGroup(internetGroup);

                    var sample1 = _database.CreateEntry(_database.RootGroupId);
                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Title, "Sample Entry", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.UserName, "Username", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Password, "Password", true);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Url, "https://keepass.info/", false);

                    await _database.UpdateEntry(sample1.Id, EntryFieldName.Notes, "You may safely delete this sample", false);

                    var sample2 = _database.CreateEntry(_database.RootGroupId);
                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Title, "Sample Entry #2", false);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.UserName, "Michael321", false);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Password, "12345", true);

                    await _database.UpdateEntry(sample2.Id, EntryFieldName.Url, "https://keepass.info/help/kb/testform.html", false);
                }
            }