up
This commit is contained in:
		@@ -0,0 +1,41 @@
 | 
			
		||||
using System;
 | 
			
		||||
using StellaOps.Cryptography;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace StellaOps.Cryptography.Tests;
 | 
			
		||||
 | 
			
		||||
public class Argon2idPasswordHasherTests
 | 
			
		||||
{
 | 
			
		||||
    private readonly Argon2idPasswordHasher hasher = new();
 | 
			
		||||
 | 
			
		||||
    [Fact]
 | 
			
		||||
    public void Hash_ProducesPhcEncodedString()
 | 
			
		||||
    {
 | 
			
		||||
        var options = new PasswordHashOptions();
 | 
			
		||||
        var encoded = hasher.Hash("s3cret", options);
 | 
			
		||||
 | 
			
		||||
        Assert.StartsWith("$argon2id$", encoded, StringComparison.Ordinal);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Fact]
 | 
			
		||||
    public void Verify_ReturnsTrue_ForCorrectPassword()
 | 
			
		||||
    {
 | 
			
		||||
        var options = new PasswordHashOptions();
 | 
			
		||||
        var encoded = hasher.Hash("s3cret", options);
 | 
			
		||||
 | 
			
		||||
        Assert.True(hasher.Verify("s3cret", encoded));
 | 
			
		||||
        Assert.False(hasher.Verify("wrong", encoded));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Fact]
 | 
			
		||||
    public void NeedsRehash_ReturnsTrue_WhenParametersChange()
 | 
			
		||||
    {
 | 
			
		||||
        var options = new PasswordHashOptions();
 | 
			
		||||
        var encoded = hasher.Hash("s3cret", options);
 | 
			
		||||
 | 
			
		||||
        var updated = options with { Iterations = options.Iterations + 1 };
 | 
			
		||||
 | 
			
		||||
        Assert.True(hasher.NeedsRehash(encoded, updated));
 | 
			
		||||
        Assert.False(hasher.NeedsRehash(encoded, options));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user