Removed database status in favor of much cleaner code

Implemented (but deactivated) anti corruption mechanism
WIP detect changes and save them if opening another database
This commit is contained in:
BONNEVILLE Geoffroy
2018-01-08 18:52:03 +01:00
parent 4a3f36d38b
commit a19519fa73
17 changed files with 220 additions and 101 deletions

View File

@@ -16,20 +16,20 @@ namespace ModernKeePassApp.Test
[TestMethod]
public void TestCreate()
{
Assert.AreEqual((int) DatabaseService.DatabaseStatus.Closed, _database.Status);
Assert.IsTrue(_database.IsClosed);
_database.DatabaseFile = ApplicationData.Current.TemporaryFolder.CreateFileAsync("NewDatabase.kdbx").GetAwaiter().GetResult();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opening, _database.Status);
Assert.IsTrue(_database.IsFileOpen);
OpenOrCreateDatabase(true);
_database.Close();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Closed, _database.Status);
_database.Close().GetAwaiter().GetResult();
Assert.IsTrue(_database.IsClosed);
}
[TestMethod]
public void TestOpen()
{
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Closed, _database.Status);
Assert.IsTrue(_database.IsClosed);
_database.DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Data\TestDatabase.kdbx").GetAwaiter().GetResult();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opening, _database.Status);
Assert.IsTrue(_database.IsFileOpen);
OpenOrCreateDatabase(false);
}
@@ -38,23 +38,23 @@ namespace ModernKeePassApp.Test
{
TestOpen();
_database.Save(ApplicationData.Current.TemporaryFolder.CreateFileAsync("SaveDatabase.kdbx").GetAwaiter().GetResult());
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opened, _database.Status);
_database.Close();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Closed, _database.Status);
Assert.IsTrue(_database.IsOpen);
_database.Close().GetAwaiter().GetResult();
Assert.IsTrue(_database.IsClosed);
TestOpen();
}
private void OpenOrCreateDatabase(bool createNew)
{
_database.Open(null, createNew);
Assert.AreEqual((int)DatabaseService.DatabaseStatus.NoCompositeKey, _database.Status);
Assert.ThrowsException<ArgumentNullException>(
() => _database.Open(null, createNew).GetAwaiter().GetResult());
var compositeKey = new CompositeKeyVm(_database, new ResourceServiceMock())
{
HasPassword = true,
Password = "test"
};
compositeKey.OpenDatabase(createNew).GetAwaiter().GetResult();
Assert.AreEqual((int)DatabaseService.DatabaseStatus.Opened, _database.Status);
Assert.IsTrue(_database.IsOpen);
}
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Threading.Tasks;
using ModernKeePass.Interfaces;
using ModernKeePass.ViewModels;
using ModernKeePassLib;
@@ -10,6 +11,11 @@ namespace ModernKeePassApp.Test.Mock
{
public class DatabaseServiceMock : IDatabase
{
private bool _isOpen;
private bool _isFileOpen;
private bool _isClosed;
public PwCompressionAlgorithm CompressionAlgorithm { get; set; }
public StorageFile DatabaseFile { get; set; }
@@ -18,6 +24,21 @@ namespace ModernKeePassApp.Test.Mock
public KdfParameters KeyDerivation { get; set; }
public bool IsOpen
{
get { return _isOpen; }
}
public bool IsFileOpen
{
get { return _isFileOpen; }
}
public bool IsClosed
{
get { return _isClosed; }
}
public string Name => "MockDatabase";
public GroupVm RecycleBin { get; set; }
@@ -25,17 +46,19 @@ namespace ModernKeePassApp.Test.Mock
public bool RecycleBinEnabled { get; set; }
public GroupVm RootGroup { get; set; }
public int Status { get; set; }
public void AddDeletedItem(PwUuid id)
{
throw new NotImplementedException();
}
public void Close()
public Task Close()
{
Status = 0;
return Task.Run(() =>
{
_isClosed = true;
_isOpen = false;
});
}
public void CreateRecycleBin()
@@ -43,9 +66,13 @@ namespace ModernKeePassApp.Test.Mock
throw new NotImplementedException();
}
public void Open(CompositeKey key, bool createNew)
public Task Open(CompositeKey key, bool createNew)
{
Status = 2;
return Task.Run(() =>
{
_isOpen = true;
_isClosed = false;
});
}
public void Save()
@@ -57,7 +84,7 @@ namespace ModernKeePassApp.Test.Mock
{
throw new NotImplementedException();
}
public void UpdateCompositeKey(CompositeKey key)
{
throw new NotImplementedException();