Changed VMs references to database singleton

Added some unit tests (WIP)
This commit is contained in:
BONNEVILLE Geoffroy
2017-11-23 15:26:57 +01:00
parent 5120c8177b
commit a8f5897364
12 changed files with 215 additions and 89 deletions

View File

@@ -4,7 +4,6 @@ using Windows.Storage;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using ModernKeePass.Common;
using ModernKeePass.ViewModels;
using ModernKeePassLib.Keys;
namespace ModernKeePassApp.Test
{
@@ -16,20 +15,20 @@ namespace ModernKeePassApp.Test
[TestMethod]
public void TestCreate()
{
Assert.AreEqual(_database.Status, (int) DatabaseHelper.DatabaseStatus.Closed);
Assert.AreEqual((int) DatabaseHelper.DatabaseStatus.Closed, _database.Status);
_database.DatabaseFile = ApplicationData.Current.TemporaryFolder.CreateFileAsync("NewDatabase.kdbx").GetAwaiter().GetResult();
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Opening);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Opening, _database.Status);
OpenOrCreateDatabase(true);
_database.Close();
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Closed);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Closed, _database.Status);
}
[TestMethod]
public void TestOpen()
{
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Closed);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Closed, _database.Status);
_database.DatabaseFile = Package.Current.InstalledLocation.GetFileAsync(@"Databases\TestDatabase.kdbx").GetAwaiter().GetResult();
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Opening);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Opening, _database.Status);
OpenOrCreateDatabase(false);
}
@@ -39,26 +38,21 @@ namespace ModernKeePassApp.Test
TestOpen();
Assert.IsTrue(_database.Save(ApplicationData.Current.TemporaryFolder.CreateFileAsync("SaveDatabase.kdbx").GetAwaiter().GetResult()));
_database.Close();
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Closed);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Closed, _database.Status);
TestOpen();
}
private void OpenOrCreateDatabase(bool createNew)
{
_database.Open(null, createNew);
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.NoCompositeKey);
var compositeKey = new CompositeKey();
if (!createNew)
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.NoCompositeKey, _database.Status);
var compositeKey = new CompositeKeyVm(_database)
{
_database.Open(compositeKey);
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.CompositeKeyError);
}
compositeKey.AddUserKey(new KcpPassword("test"));
_database.Open(compositeKey, createNew);
/*var compositeKey = new CompositeKeyVm(_database);
compositeKey.OpenDatabase(createNew);*/
Assert.AreEqual(_database.Status, (int)DatabaseHelper.DatabaseStatus.Opened);
HasPassword = true,
Password = "test"
};
compositeKey.OpenDatabase(createNew);
Assert.AreEqual((int)DatabaseHelper.DatabaseStatus.Opened, _database.Status);
}
}
}

View File

@@ -0,0 +1,66 @@
using System;
using ModernKeePass.Interfaces;
using ModernKeePass.ViewModels;
using ModernKeePassLib;
using ModernKeePassLib.Cryptography.KeyDerivation;
using ModernKeePassLib.Keys;
using Windows.Storage;
namespace ModernKeePassApp.Test.Mock
{
public class DatabaseHelperMock : IDatabase
{
public PwCompressionAlgorithm CompressionAlgorithm { get; set; }
public StorageFile DatabaseFile { get; set; }
public PwUuid DataCipher { get; set; }
public KdfParameters KeyDerivation { get; set; }
public string Name => "MockDatabase";
public GroupVm RecycleBin { get; set; }
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()
{
throw new NotImplementedException();
}
public void CreateRecycleBin()
{
throw new NotImplementedException();
}
public void Open(CompositeKey key, bool createNew)
{
throw new NotImplementedException();
}
public bool Save()
{
throw new NotImplementedException();
}
public bool Save(StorageFile file)
{
throw new NotImplementedException();
}
public void UpdateCompositeKey(CompositeKey key)
{
throw new NotImplementedException();
}
}
}

View File

@@ -118,7 +118,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="DatabaseTests.cs" />
<Compile Include="Mock\DatabaseHelperMock.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModelsTests.cs" />
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">

View File

@@ -0,0 +1,40 @@
using System.Linq;
using Windows.ApplicationModel;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using ModernKeePass.ViewModels;
using ModernKeePassApp.Test.Mock;
namespace ModernKeePassApp.Test
{
[TestClass]
public class ViewModelsTests
{
[TestMethod]
public void TestAboutVm()
{
var aboutVm = new AboutVm(Package.Current);
Assert.AreEqual("1.0", aboutVm.Version);
}
[TestMethod]
public void TestMainVm()
{
var database = new DatabaseHelperMock();
var mainVm = new MainVm(null, null, database);
Assert.AreEqual(1, mainVm.MainMenuItems.Count());
var firstGroup = mainVm.MainMenuItems.FirstOrDefault();
Assert.AreEqual(5, firstGroup.Count());
database.Status = 1;
mainVm = new MainVm(null, null, database);
Assert.IsNotNull(mainVm.SelectedItem);
Assert.AreEqual("Open", ((MainMenuItemVm)mainVm.SelectedItem).Title);
database.Status = 2;
mainVm = new MainVm(null, null, database);
Assert.IsNotNull(mainVm.SelectedItem);
Assert.AreEqual(2, mainVm.MainMenuItems.Count());
Assert.AreEqual("Save", ((MainMenuItemVm)mainVm.SelectedItem).Title);
}
}
}