From 0309b4575c36fce99f9b859c816a2c75fcaa0831 Mon Sep 17 00:00:00 2001 From: SRvSaha Date: Sat, 24 Oct 2020 22:06:54 +0530 Subject: [PATCH] Added Missing Unit Test for GetPossibleConfig; Added necessary Data for Unit Test --- .../PasswordHashTest.cs | 12 ++++++ .../TestHashFinderDataGenerator.cs | 40 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 csharp-password-hash/csharp-password-hash.Test/TestHashFinderDataGenerator.cs diff --git a/csharp-password-hash/csharp-password-hash.Test/PasswordHashTest.cs b/csharp-password-hash/csharp-password-hash.Test/PasswordHashTest.cs index 6d57d78..efef577 100644 --- a/csharp-password-hash/csharp-password-hash.Test/PasswordHashTest.cs +++ b/csharp-password-hash/csharp-password-hash.Test/PasswordHashTest.cs @@ -7,6 +7,7 @@ public class PasswordHashTest private const string GlobalSalt= "SecureSalt"; private const string CorrectPassword = "CorrectPassword"; private const string SaltedPasswordFormat = Constants.PasswordPlaceHolder+"--"+Constants.SaltPlaceHolder; + private const string DefaultSaltedPasswordFormat = "#PasswordPlaceHolder#--#SaltPlaceHolder#"; public class WhenPerPasswordSaltTrue { @@ -225,6 +226,17 @@ public void Correct_Hash_Values_Should_Match_GetHash(HashingAlgo hashingAlgo, st Assert.Equal(hashExpected,hashActual); } + + [Theory] + [ClassData(typeof(TestHashFinderDataGenerator))] + public void Correct_Hashing_Config_Should_Match_GetPossibleConfig(HashingAlgo expectedHashingAlgo, EncodingType expectedEncodingType, string inputHash) + { + var passwordHashing = new PasswordHashing(); + var hashingConfigActual = passwordHashing.GetPossibleConfig(CorrectPassword, GlobalSalt, DefaultSaltedPasswordFormat, inputHash); + + Assert.Equal(expectedHashingAlgo, hashingConfigActual.HashingAlgo); + Assert.Equal(expectedEncodingType, hashingConfigActual.PasswordHashEncodingType); + } } } } diff --git a/csharp-password-hash/csharp-password-hash.Test/TestHashFinderDataGenerator.cs b/csharp-password-hash/csharp-password-hash.Test/TestHashFinderDataGenerator.cs new file mode 100644 index 0000000..03e6759 --- /dev/null +++ b/csharp-password-hash/csharp-password-hash.Test/TestHashFinderDataGenerator.cs @@ -0,0 +1,40 @@ +using System.Collections; +using System.Collections.Generic; + + +namespace CSharpPasswordHash.Test +{ + public class TestHashFinderDataGenerator : IEnumerable + { + private readonly List _data = new List + { + /* Hash values generated using the following HashingConfig + #PasswordPlaceHolder#: CorrectPassword + #SaltPlaceHolder#: SecureSalt + + {CSharpPasswordHash.HashingConfig} + GeneratePerPasswordSalt: false + GlobalSalt: "SecureSalt" + PasswordHashEncodingType: CSharpPasswordHash.EncodingType.Default/Base64 + SaltedPasswordFormat: "#PasswordPlaceHolder#--#SaltPlaceHolder#" + */ + new object[] { HashingAlgo.SHA1, EncodingType.Default, "fe380f9845fd3cf4d9b83422913a0c56ff51ef2e"}, + new object[] { HashingAlgo.SHA1, EncodingType.Base64, "/jgPmEX9PPTZuDQikToMVv9R7y4="}, + new object[] { HashingAlgo.SHA256, EncodingType.Default, "8e508309d85194826dd92cba809a793299905de164be4f5a7aa5232c5ffd9845"}, + new object[] { HashingAlgo.SHA256, EncodingType.Base64, "jlCDCdhRlIJt2Sy6gJp5MpmQXeFkvk9aeqUjLF/9mEU="}, + new object[] { HashingAlgo.HMAC_SHA1, EncodingType.Default, "b64c470ec33564f921da7ccd3223a7800797322b" }, + new object[] { HashingAlgo.HMAC_SHA1, EncodingType.Base64, "tkxHDsM1ZPkh2nzNMiOngAeXMis="}, + new object[] { HashingAlgo.HMAC_SHA256, EncodingType.Default, "2d8b2eb164fd8424860048e63ecde73bdcad8f198ece060416b8481ee851baa6"}, + new object[] { HashingAlgo.HMAC_SHA256, EncodingType.Base64, "LYsusWT9hCSGAEjmPs3nO9ytjxmOzgYEFrhIHuhRuqY="}, + new object[] { HashingAlgo.MD5, EncodingType.Default, "923d89cde8c404a0f182474abb4ddfad" }, + new object[] { HashingAlgo.MD5, EncodingType.Base64, "kj2JzejEBKDxgkdKu03frQ==" } + }; + + public IEnumerator GetEnumerator() => _data.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } +} + + +