using Autofac; using System.Data; using Insight.Database; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.Extensions.Logging; using Core.Telemetry; using Core.Entities.Users; using System.Diagnostics; using Sodium; namespace Tests { [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 string hashedPassword = PasswordHasher.HashPassword(password); string[] parts = hashedPassword.Split('.'); // Assert Assert.AreEqual(3, parts.Length); Assert.AreEqual("600000", parts[0]); } [TestMethod] public void VerifyPassword_WithCorrectPassword_ShouldReturnTrue() { // Arrange string password = "TestPassword123"; string hashedPassword = PasswordHasher.HashPassword(password); // Act bool result = PasswordHasher.VerifyPassword(hashedPassword, password); // Assert Assert.IsTrue(result); } [TestMethod] public void VerifyPassword_WithWrongPassword_ShouldReturnFalse() { // Arrange string correctPassword = "TestPassword123"; string wrongPassword = "WrongPassword123"; string hashedPassword = PasswordHasher.HashPassword(correctPassword); // Act bool result = PasswordHasher.VerifyPassword(hashedPassword, wrongPassword); // Assert Assert.IsFalse(result); } [TestMethod] public void VerifyPassword_WithInvalidHashFormat_ShouldReturnFalse() { // Arrange string password = "TestPassword123"; string invalidHash = "InvalidHash"; // Act bool result = PasswordHasher.VerifyPassword(invalidHash, password); // Assert Assert.IsFalse(result); } } }