PlanTempusApp/Tests/PasswordHasherTest.cs

89 lines
2.6 KiB
C#
Raw Normal View History

using System.Diagnostics;
using Sodium;
2025-03-04 17:13:02 +01:00
using PlanTempus.Core;
namespace PlanTempus.Tests
{
2025-03-04 17:13:02 +01:00
[TestClass]
public class PasswordHasherTests : TestFixture
{
[TestMethod]
public void MyTestMethod()
{
var stopwatch = Stopwatch.StartNew();
byte[] salt = PasswordHash.ScryptGenerateSalt();
// 2. Konverter password til byte[]
byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes("password123");
// 3. Kald ScryptHashBinary korrekt
byte[] hash = PasswordHash.ScryptHashBinary(
password: passwordBytes,
salt: salt, // 32-byte array
limit: PasswordHash.Strength.Interactive,
outputLength: 32
);
stopwatch.Stop();
}
[TestMethod]
public void HashPassword_ShouldCreateValidHashFormat()
{
// Arrange
string password = "TestPassword123";
// Act
2025-03-04 17:13:02 +01:00
string hashedPassword = new SecureTokenizer().TokenizeText(password);
string[] parts = hashedPassword.Split('.');
// Assert
Assert.AreEqual(3, parts.Length);
Assert.AreEqual("100000", parts[0]);
}
[TestMethod]
public void VerifyPassword_WithCorrectPassword_ShouldReturnTrue()
{
// Arrange
string password = "TestPassword123";
2025-03-04 17:13:02 +01:00
string hashedPassword = new SecureTokenizer().TokenizeText(password);
// Act
2025-03-04 17:13:02 +01:00
bool result = new SecureTokenizer().VerifyToken(hashedPassword, password);
// Assert
Assert.IsTrue(result);
}
[TestMethod]
public void VerifyPassword_WithWrongPassword_ShouldReturnFalse()
{
// Arrange
string correctPassword = "TestPassword123";
string wrongPassword = "WrongPassword123";
2025-03-04 17:13:02 +01:00
string hashedPassword = new SecureTokenizer().TokenizeText(correctPassword);
// Act
2025-03-04 17:13:02 +01:00
bool result = new SecureTokenizer().VerifyToken(hashedPassword, wrongPassword);
// Assert
Assert.IsFalse(result);
}
[TestMethod]
public void VerifyPassword_WithInvalidHashFormat_ShouldReturnFalse()
{
// Arrange
string password = "TestPassword123";
string invalidHash = "InvalidHash";
// Act
2025-03-04 17:13:02 +01:00
bool result = new SecureTokenizer().VerifyToken(invalidHash, password);
// Assert
Assert.IsFalse(result);
}
}
}