using System; using System.IO; using Windows.Storage; using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; using ModernKeePassLib.Keys; using ModernKeePassLib.Utility; namespace ModernKeePassLib.Test.Keys { [TestClass] public class KcpKeyFileTests { private const string TestCreateFile = "TestCreate.xml"; private const string TestKey = "0123456789"; private const string ExpectedFileStart = "\r\n" + "\r\n" + "\t\r\n" + "\t\t1.00\r\n" + "\t\r\n" + "\t\r\n" + "\t\t"; private const string ExpectedFileEnd = "\t\r\n" + "\r\n"; [TestMethod] public void TestConstruct() { var expectedKeyData = new byte[32] { 0xC1, 0xB1, 0x12, 0x77, 0x23, 0xB8, 0x99, 0xB8, 0xB9, 0x3B, 0x1B, 0xFF, 0x6C, 0xBE, 0xA1, 0x5B, 0x8B, 0x99, 0xAC, 0xBD, 0x99, 0x51, 0x85, 0x95, 0x31, 0xAA, 0x14, 0x3D, 0x95, 0xBF, 0x63, 0xFF }; var fullPath = Path.Combine(ApplicationData.Current.TemporaryFolder.Path, TestCreateFile); var file = ApplicationData.Current.TemporaryFolder.CreateFileAsync(TestCreateFile).GetAwaiter().GetResult(); using (var fs = file.OpenStreamForWriteAsync().GetAwaiter().GetResult()) { using (var sw = new StreamWriter(fs)) { sw.Write(ExpectedFileStart); sw.Write(TestKey); sw.Write(ExpectedFileEnd); } } try { var keyFile = new KcpKeyFile(fullPath); var keyData = keyFile.KeyData.ReadData(); Assert.IsTrue(MemUtil.ArraysEqual(keyData, expectedKeyData)); } finally { file.DeleteAsync().GetAwaiter().GetResult(); } } [TestMethod] public void TestCreate() { var fullPath = Path.Combine(ApplicationData.Current.TemporaryFolder.Path, TestCreateFile); var file = ApplicationData.Current.TemporaryFolder.CreateFileAsync(TestCreateFile).GetAwaiter().GetResult(); KcpKeyFile.Create(fullPath, null); try { var fileContents = FileIO.ReadTextAsync(file).GetAwaiter().GetResult(); Assert.AreEqual(fileContents.Length, 187); Assert.IsTrue(fileContents.StartsWith(ExpectedFileStart)); Assert.IsTrue(fileContents.EndsWith(ExpectedFileEnd)); } finally { file.DeleteAsync().GetAwaiter().GetResult(); } } } }