Files
modernkeepass/KeePass2PCL.Test.UWP/PwDatabaseTests.cs
Geoffroy Bonneville 22ea657885 Added unit tests (all passing unfortunately)
UI improvements
Write mode still doesn't work
2017-09-25 18:34:27 +02:00

118 lines
4.6 KiB
C#

using System.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using PCLStorage;
using System.IO;
using KeePass2PCL.Serialization;
using KeePass2PCL.Keys;
namespace KeePass2PCL.Test.UWP
{
[TestClass]
public class PwDatabaseTests
{
[TestMethod]
public void Open_With_Wrong_Password_Test()
{
IFolder folder = SpecialFolder.Current.Local;
IFolder testData = folder.CreateFolderAsync("TestData",
CreationCollisionOption.OpenIfExists).Result;
IFile file = testData.CreateFileAsync("1.kdbx",
CreationCollisionOption.ReplaceExisting).Result;
var fileStream = file.OpenAsync(PCLStorage.FileAccess.ReadAndWrite).Result;
var assembly = typeof(PwDatabaseTests).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream(
"KeePass2PCL.Test.UWP.TestData.1.kdbx");
using (var reader = new BinaryReader(stream))
using (var fileWriter = new BinaryWriter(fileStream))
{
fileWriter.Write(reader.ReadBytes((int)stream.Length));
}
var ci = new IOConnectionInfo();
ci.Path = file.Path;
var key = new CompositeKey();
key.AddUserKey(new KcpPassword("0"));
var db = new PwDatabase();
bool wasException = false;
try
{
db.Open(ci, key, null);
}
catch (InvalidCompositeKeyException)
{
wasException = true;
}
Assert.IsTrue(wasException);
file.DeleteAsync().Wait();
testData.DeleteAsync().Wait();
}
[TestMethod]
public void Open_With_KeyFile_Test()
{
IFolder folder = SpecialFolder.Current.Local;
IFolder testData = folder.CreateFolderAsync("TestData",
CreationCollisionOption.OpenIfExists).Result;
IFile keyFile = testData.CreateFileAsync("1.key",
CreationCollisionOption.ReplaceExisting).Result;
var fileStream = keyFile.OpenAsync(PCLStorage.FileAccess.ReadAndWrite).Result;
var assembly = typeof(PwDatabaseTests).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream(
"KeePass2PCL.Test.UWP.TestData.1.key");
using (var reader = new BinaryReader(stream))
using (var fileWriter = new BinaryWriter(fileStream))
{
fileWriter.Write(reader.ReadBytes((int)stream.Length));
}
IFile file = testData.CreateFileAsync("1key.kdbx",
CreationCollisionOption.ReplaceExisting).Result;
fileStream = file.OpenAsync(PCLStorage.FileAccess.ReadAndWrite).Result;
assembly = typeof(PwDatabaseTests).GetTypeInfo().Assembly;
stream = assembly.GetManifestResourceStream(
"KeePass2PCL.Test.UWP.TestData.1key.kdbx");
using (var reader = new BinaryReader(stream))
using (var fileWriter = new BinaryWriter(fileStream))
{
fileWriter.Write(reader.ReadBytes((int)stream.Length));
}
var ci = new IOConnectionInfo();
ci.Path = file.Path;
var key = new CompositeKey();
key.AddUserKey(new KcpKeyFile(keyFile.Path));
var db = new PwDatabase();
db.Open(ci, key, null);
keyFile.DeleteAsync().Wait();
file.DeleteAsync().Wait();
testData.DeleteAsync().Wait();
}
[TestMethod]
public void New_Test()
{
IFolder folder = SpecialFolder.Current.Local;
IFolder testData = folder.CreateFolderAsync("TestData",
CreationCollisionOption.OpenIfExists).Result;
IFile file = testData.CreateFileAsync("1.kdbx",
CreationCollisionOption.ReplaceExisting).Result;
var ci = new IOConnectionInfo();
ci.Path = file.Path;
var key = new CompositeKey();
key.AddUserKey(new KcpPassword("0"));
var db = new PwDatabase();
db.New(ci, key);
var initialEnitiesCount = db.RootGroup.GetEntriesCount(true);
Assert.AreNotEqual(0, initialEnitiesCount);
db.Save(null);
db.Close();
Assert.IsNull(db.RootGroup);
db = new PwDatabase();
db.Open(ci, key, null);
Assert.AreEqual(initialEnitiesCount,
db.RootGroup.GetEntriesCount(true));
}
}
}