From 08f263e3f45da7910623d1e052f21cebf8ffe8d9 Mon Sep 17 00:00:00 2001 From: Vinicius Chiele Date: Tue, 7 Feb 2017 22:04:15 +0000 Subject: [PATCH] Add new unit tests --- src/Scrypt.Tests/ScryptEncoderTests.cs | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/Scrypt.Tests/ScryptEncoderTests.cs b/src/Scrypt.Tests/ScryptEncoderTests.cs index c1dadff..e881a91 100644 --- a/src/Scrypt.Tests/ScryptEncoderTests.cs +++ b/src/Scrypt.Tests/ScryptEncoderTests.cs @@ -1,4 +1,5 @@ using Scrypt; +using System; using Xunit; namespace Scrypt.Tests @@ -7,11 +8,53 @@ public class ScryptEncoderTests { [Fact] public void TestEncode() + { + int iterationCount = 2; + + for (int i = 0; i < 15; i++) + { + var encoder = new ScryptEncoder(iterationCount, 8, 1); + var hashedPassword = encoder.Encode("MyPassword"); + Assert.True(encoder.Compare("MyPassword", hashedPassword)); + + iterationCount *= 2; + } + } + + [Fact] + public void TestCompare() { var encoder = new ScryptEncoder(); var hashedPassword = encoder.Encode("MyPassword"); Assert.True(encoder.Compare("MyPassword", hashedPassword)); Assert.False(encoder.Compare("WrongPassword", hashedPassword)); } + + [Fact] + public void TestIsValid() + { + var encoder = new ScryptEncoder(); + Assert.False(encoder.IsValid("$e1$adasdasd$asdasdsd")); + Assert.True(encoder.IsValid(encoder.Encode("MyPassword"))); + } + + [Fact] + public void TestIterationCountNonPowerOfTwo() + { + var encoder = new ScryptEncoder(1000, 8, 1); + Assert.Throws(() => encoder.Encode("MyPassword")); + } + + [Fact] + public void TestBackwardCompatibility() + { + var encoder = new ScryptEncoder(); + + var hashedPassword = "$s0$40000801$eM1F+ITBb6SVFQ5QxD2jWXY8s4RGsIU+Yh4JosOewoY=$1h22/MY2cpm9Vz7//NRiXwCjffVXQWOKJ7n27vNVfP4="; + Assert.True(encoder.Compare("MyPassword", hashedPassword)); + + hashedPassword = "$s1$40000801$5ScyYcGbFmSF5P+A64cThg+c6rFtsfyxDHkWWCt97xI=$U+7EMhBXHjNHudmn/sgvX4VZ6ddoSKLkL0nDOSKYLaQ="; + Assert.True(encoder.Compare("MyPassword", hashedPassword)); + } } } \ No newline at end of file