public void ViewModelDataTest()
        {
            var viewModel = new DatabaseSettingsViewModel(mock.Object);

            Assert.That(viewModel.Username, Is.EqualTo(mockData.Username));
            Assert.That(viewModel.Password, Is.EqualTo(mockData.Password));
            Assert.That(viewModel.DatabaseName, Is.EqualTo(mockData.DatabaseName));
            Assert.That(viewModel.ServerName, Is.EqualTo(mockData.ServerName));
            Assert.That(viewModel.IntegratedSecurity, Is.False);
        }
        public async Task Init()
        {
            // Get database from test attributes
            Utils.DatabaseInfo dbInfo = await Utils.GetDatabaseInfoForTest(TestContext);

            this.dbPassword = dbInfo.Password;
            this.dbKeyFile  = dbInfo.Keyfile;

            // Assert that databases named *ReadOnly* are actually readonly after a clone
            if (dbInfo.Database.Name.IndexOf("ReadOnly", StringComparison.OrdinalIgnoreCase) >= 0)
            {
                Assert.IsFalse(
                    await dbInfo.Database.CheckWritableAsync(),
                    $"This file is expected to be read-only; please verify this before testing: {dbInfo.Database.Name}"
                    );
            }

            this.saveFile = (await dbInfo.Database.AsIStorageFile.CopyAsync(
                                 ApplicationData.Current.TemporaryFolder,
                                 $"PersistenceTestDb-{Guid.NewGuid()}.kdbx",
                                 NameCollisionOption.ReplaceExisting
                                 )).AsWrapper();

            // Use a KdbxReader to parse the database and get a corresponding writer
            KdbxReader reader = new KdbxReader();

            using (IRandomAccessStream stream = await this.saveFile.AsIStorageFile.OpenReadAsync())
            {
                await reader.ReadHeaderAsync(stream, CancellationToken.None);

                KdbxDecryptionResult decryption = await reader.DecryptFileAsync(stream, dbInfo.Password, dbInfo.Keyfile, CancellationToken.None);

                Assert.AreEqual(KdbxParserCode.Success, decryption.Result.Code);
                this.document = decryption.GetDocument();
            }

            // Construct services we can use for the test
            this.writer             = reader.GetWriter();
            this.persistenceService = new DefaultFilePersistenceService(
                this.writer,
                this.writer,
                new StorageFileDatabaseCandidate(this.saveFile, true),
                new MockSyncContext(),
                true
                );
            this.credentialStorage = new MockCredentialProvider();
            this.masterKeyVm       = new MasterKeyChangeViewModel(
                this.document,
                this.saveFile,
                new DatabaseCredentialProvider(this.persistenceService, this.credentialStorage),
                new MockFileService()
                );
            this.settingsVm = new DatabaseSettingsViewModel(this.writer);
        }
        public void ViewModelLoadTest()
        {
            var viewModel = new DatabaseSettingsViewModel(mock.Object)
            {
                IntegratedSecurity = true,
                Password           = "******",
                Username           = "******"
            };

            viewModel.SettingMediatorOnSaveRequested(null, EventArgs.Empty);

            var viewModel2 = new DatabaseSettingsViewModel(mock.Object);

            Assert.That(viewModel2.IntegratedSecurity, Is.True);
            Assert.That(viewModel2.Password, Is.EqualTo("NEWPASSWORD"));
            Assert.That(viewModel2.Username, Is.EqualTo("NEWUSERNAME"));
        }
 public SelectDatabaseFileCommand(DatabaseSettingsViewModel viewModel) : base(viewModel)
 {
 }
 protected DatabaseFileCommandBase(DatabaseSettingsViewModel viewModel)
 {
     ViewModel = viewModel;
 }
 public CreateDatabaseFileCommand(DatabaseSettingsViewModel viewModel) : base(viewModel)
 {
 }
Exemple #7
0
 private void SaveSettings(DatabaseSettingsViewModel settingsViewModel, UIElement _)
 {
     var dataSource = _bootstrapper.GetInstance<IPWDatabaseDataSource>();
     //The settings view model sets the properties directly on the IKdbTree, so we just need to save the database here
     dataSource.SavePwDatabase();
 }
Exemple #8
0
 private void SettingsClosed(DatabaseSettingsViewModel s, UIElement v)
 {
     SaveSettings(s, v);
 }