public void Constructor_DuplicateParts_ArgumentExceptionExpected() { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var partA = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "datadatadata" }; var partB = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "datadatadata" }; Assert.Throws <ArgumentException>(() => { var wallet = new Wallet(new List <WalletPart>() { partA, partB }); }); }
public void Constructor_ValidPartsWithDuplicates_ExpectedTrueQuantity() { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var partA = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "631-7-8b1b1703484d828fe2a61b9c63497aa68494aa226a272657" }; var partB = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "5d1-5-c67046150ecd502cdbc15f7a67e990a646febd88c229d3ea" }; var partC = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "5d1-5-c67046150ecd502cdbc15f7a67e990a646febd88c229d3ea" }; var wallet = new Wallet(new List <WalletPart>() { partA, partB, partC }); Assert.That(wallet.Parts.Count, Is.Not.EqualTo(3)); Assert.That(wallet.Parts.Count, Is.EqualTo(2)); }
public void Constructor_ValidSignature_NoExceptionExpected() { Assert.DoesNotThrow(() => { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var part1 = new WalletPart() { Signature = signature, Data = "0e1-1-5ca6e43983ccf56aa90fd6b66ea844a7c22a92dd92343888" }; var part2 = new WalletPart() { Signature = signature, Data = "5d1-5-c67046150ecd502cdbc15f7a67e990a646febd88c229d3ea" }; var wallet1 = new Wallet(signature, "ExampleOfPrivateKey"); var wallet2 = new Wallet(new List <IWalletPart> { part1, part2 }); }); }
public void Constructor_InvalidParts_ArgumentExceptionExpected() { var partA = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 1 }, Data = "datadatadata" }; var partB = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 1 }, Data = "datadatadata22222" }; Assert.Throws <ArgumentException>(() => { var wallet = new Wallet(new List <WalletPart>() { partA, partB }); }); }
public void Constructor_EnoughValidParts_NoExceptionExpected() { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var partA = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "0e1-1-5ca6e43983ccf56aa90fd6b66ea844a7c22a92dd92343888" }; var partB = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "631-7-8b1b1703484d828fe2a61b9c63497aa68494aa226a272657" }; Assert.DoesNotThrow(() => { var wallet = new Wallet(new List <WalletPart>() { partA, partB }); }); }
public void Constructor_EnoughPartsWithDifferentSignatures_ArgumentExceptionExpected() { var partA = new WalletPart() { Signature = new WalletSignature() { Version = 2, PartsThreshold = 2, PartsTotal = 4 }, Data = "datadatadata" }; var partB = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }, Data = "datadatadata" }; Assert.Throws <ArgumentException>(() => { var wallet = new Wallet(new List <WalletPart>() { partA, partB }); }, Strings.SharesHaveDifferentSignatures); }
public void Constructor_DifferentParts_RecoveredValidPrivateKey() { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var partA = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "0e1-1-5ca6e43983cff56aa90fd6b66ea844a7c22a92dd92343888" // Corrupt data }; var partB = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "631-7-8b1b1703484d828fe2a61b9c63497aa68494aa226a272657" }; Assert.Throws <ArgumentException>(() => { var wallet = new Wallet(new List <WalletPart>() { partA, partB }); }, Strings.ChecksumExceptionSharesCorrupt); }
public void InterpretShortNotation_NullShortNotation_InvalidWalletPart() { var walletPart = new WalletPart(); var result = walletPart.InterpretShortNotation(null); Assert.IsFalse(result); }
public void IsValid_NullSignatureValidData_False() { var part = new WalletPart() { Signature = null, Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; Assert.That(part.IsValid(), Is.False); }
public void IsValid_EmptyDataValidSignature_False() { var part = new WalletPart() { Signature = new WalletSignature("1|5|10"), Data = " " }; Assert.That(part.IsValid(), Is.False); }
public void InterpretShortNotation_TruncatedInvalidShortNotation_InvalidWalletPart() { var validShortNotation = "1|4|5edb71e0-ac40-40a3-a22d-70220058eba5"; var walletPart = new WalletPart(); var result = walletPart.InterpretShortNotation(validShortNotation); Assert.IsFalse(result); }
public void InterpretShortNotation_TooLongShortNotation_InvalidWalletPart() { var invalidShortNotation = "1|4|5edb71e0-ac40-40a3-a22d-70220058eba5|1111|2222|3333"; var walletPart = new WalletPart(); var result = walletPart.InterpretShortNotation(invalidShortNotation); Assert.IsFalse(result); }
public void IsValid_ValidWalletPart_True() { var part = new WalletPart() { Signature = new WalletSignature("1|2|3"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; Assert.That(part.IsValid()); }
public void IsValid_NullDataInvalidSignature_False() { var part = new WalletPart() { Signature = new WalletSignature("1|10|5"), Data = null }; Assert.That(part.IsValid(), Is.False); }
public void IsValid_ValidDataInvalidSignature_False() { var part = new WalletPart() { Signature = new WalletSignature("1|10|5"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; Assert.That(part.IsValid(), Is.False); }
public void InterpretShortNotation_ValidShortNotationWithExtraDelimiters_ValidWalletPart() { var validShortNotation = "|1|2|4|5edb71e0-ac40-40a3-a22d-70220058eba5|"; var walletPart = new WalletPart(validShortNotation); Assert.That(walletPart.Signature.Version, Is.EqualTo(1)); Assert.That(walletPart.Signature.PartsThreshold, Is.EqualTo(2)); Assert.That(walletPart.Signature.PartsTotal, Is.EqualTo(4)); Assert.That(walletPart.Data, Is.EqualTo("5edb71e0-ac40-40a3-a22d-70220058eba5")); }
public void IsValid_InvalidSignatureValidData_InvalidSignatureMessage() { var part = new WalletPart() { Signature = new WalletSignature("1|10|5"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; var expectedMessage = Strings.SharesThresholdCannotBeLessThanSharesTotal; part.IsValid(out string message); Assert.That(message, Is.EqualTo(expectedMessage)); }
public void IsValid_ValidSignatureBlankData_BlankDataMessage() { var part = new WalletPart() { Signature = new WalletSignature("1|5|10"), Data = "" }; var expectedMessage = Strings.DataIsNullOrEmpty; part.IsValid(out string message); Assert.That(message, Is.EqualTo(expectedMessage)); }
public void IsValid_NullSignatureValidData_EmptySignatureMessage() { var part = new WalletPart() { Signature = null, Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; var expectedMessage = Strings.SignatureIsNull; part.IsValid(out string message); Assert.That(message, Is.EqualTo(expectedMessage)); }
static void RecoverPrivateKey(IEnumerable <string> rawParts) { var deserializedParts = new List <WalletPart>(); foreach (var rawPart in rawParts) { var part = new WalletPart(rawPart); deserializedParts.Add(part); } var wallet = new Wallet(deserializedParts); Console.WriteLine("Recovered Private Key:\n " + wallet.PrivateKey); }
public void InterpretShortNotation_ValidShortNotation_ValidWalletPart() { var validShortNotation = "1|2|4|5edb71e0-ac40-40a3-a22d-70220058eba5"; var walletPart = new WalletPart(); var result = walletPart.InterpretShortNotation(validShortNotation); Assert.IsTrue(result); Assert.That(walletPart.Signature.Version, Is.EqualTo(1)); Assert.That(walletPart.Signature.PartsThreshold, Is.EqualTo(2)); Assert.That(walletPart.Signature.PartsTotal, Is.EqualTo(4)); Assert.That(walletPart.Data, Is.EqualTo("5edb71e0-ac40-40a3-a22d-70220058eba5")); }
public void GetShortNotation_InvalidSignature_NullShortNotation() { var walletPart = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 22, PartsTotal = 4 }, Data = "5edb71e0-ac40-40a3-a22d-70220058eba5" }; Assert.IsNull(walletPart.GetShortNotation()); }
public void GetShortNotation_InvalidData_NullShortNotation() { var walletPart = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }, Data = null }; Assert.IsNull(walletPart.GetShortNotation()); }
public void Equals_SameDataDifferentSignature_False() { var walletPartA = new WalletPart() { Signature = new WalletSignature("1|5|20"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; var walletPartB = new WalletPart() { Signature = new WalletSignature("1|2|4"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; Assert.That(walletPartA, Is.Not.EqualTo(walletPartB)); }
public void Equals_DifferentDataSameSignature_False() { var walletPartA = new WalletPart() { Signature = new WalletSignature("1|2|4"), Data = "0aac471a-813f-49f8-9f87-1559bd462e93" }; var walletPartB = new WalletPart() { Signature = new WalletSignature("1|2|4"), Data = "11baa341-49a7-48c7-b390-9b2f38d855d0" }; Assert.That(walletPartA, Is.Not.EqualTo(walletPartB)); }
public void GetShortNotation_ValidWalletPart_ValidShortNotation() { var walletPart = new WalletPart() { Signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }, Data = "5edb71e0-ac40-40a3-a22d-70220058eba5" }; var expectedShortNotation = "1|2|4|5edb71e0-ac40-40a3-a22d-70220058eba5"; Assert.That(walletPart.GetShortNotation(), Is.EqualTo(expectedShortNotation)); }
public void Constructor_NotEnoughParts_ArgumentExceptionExpected() { var signature = new WalletSignature() { Version = 1, PartsThreshold = 2, PartsTotal = 4 }; var part = new WalletPart() { Signature = new WalletSignature(signature.GetShortNotation()), Data = "datadatadata" }; Assert.Throws <ArgumentException>(() => { var wallet = new Wallet(new List <WalletPart>() { part }); }, Strings.NotEnoughShares); }