79 lines
3.3 KiB
C#
79 lines
3.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Security.Claims;
|
|
using Moq;
|
|
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNet.Identity.Test
|
|
{
|
|
public class PasswordValidatorTest
|
|
{
|
|
[Fact]
|
|
public async Task ValidateThrowsWithNullTest()
|
|
{
|
|
// Setup
|
|
var validator = new PasswordValidator();
|
|
|
|
// Act
|
|
// Assert
|
|
await Assert.ThrowsAsync<ArgumentNullException>(() => validator.Validate(null));
|
|
}
|
|
|
|
|
|
[Theory, InlineData(""), InlineData("abc"), InlineData("abcde")]
|
|
public async Task FailsIfTooShortTests(string input)
|
|
{
|
|
const string error = "Passwords must be at least 6 characters.";
|
|
var valid = new PasswordValidator {RequiredLength = 6};
|
|
UnitTestHelper.IsFailure(await valid.Validate(input), error);
|
|
}
|
|
|
|
[Theory, InlineData("abcdef"), InlineData("aaaaaaaaaaa")]
|
|
public async Task SuccessIfLongEnoughTests(string input) {
|
|
var valid = new PasswordValidator {RequiredLength = 6};
|
|
UnitTestHelper.IsSuccess(await valid.Validate("abcdef"));
|
|
UnitTestHelper.IsSuccess(await valid.Validate("abcdeldkajfd"));
|
|
}
|
|
|
|
[Theory, InlineData("a"), InlineData("aaaaaaaaaaa")]
|
|
public async Task FailsWithoutRequiredNonAlphanumericTests(string input)
|
|
{
|
|
var valid = new PasswordValidator { RequireNonLetterOrDigit = true };
|
|
UnitTestHelper.IsFailure(await valid.Validate(input), "Passwords must have at least one non letter or digit character.");
|
|
}
|
|
|
|
[Theory, InlineData("@"), InlineData("abcd@e!ld!kajfd"), InlineData("!!!!!!")]
|
|
public async Task SucceedsWithRequiredNonAlphanumericTests(string input)
|
|
{
|
|
var valid = new PasswordValidator { RequireNonLetterOrDigit = true };
|
|
UnitTestHelper.IsSuccess(await valid.Validate(input));
|
|
}
|
|
|
|
[Fact]
|
|
public async Task UberMixedRequiredTests()
|
|
{
|
|
const string alphaError = "Passwords must have at least one non letter or digit character.";
|
|
const string upperError = "Passwords must have at least one uppercase ('A'-'Z').";
|
|
const string lowerError = "Passwords must have at least one lowercase ('a'-'z').";
|
|
const string digitError = "Passwords must have at least one digit ('0'-'9').";
|
|
const string lengthError = "Passwords must be at least 6 characters.";
|
|
var valid = new PasswordValidator
|
|
{
|
|
RequireNonLetterOrDigit = true,
|
|
RequireDigit = true,
|
|
RequireLowercase = true,
|
|
RequireUppercase = true,
|
|
RequiredLength = 6
|
|
};
|
|
UnitTestHelper.IsFailure(await valid.Validate("abcde"),
|
|
string.Join(" ", lengthError, alphaError, digitError, upperError));
|
|
UnitTestHelper.IsFailure(await valid.Validate("a@B@cd"), digitError);
|
|
UnitTestHelper.IsFailure(await valid.Validate("___"),
|
|
string.Join(" ", lengthError, digitError, lowerError, upperError));
|
|
UnitTestHelper.IsFailure(await valid.Validate("a_b9de"), upperError);
|
|
UnitTestHelper.IsSuccess(await valid.Validate("abcd@e!ld!kaj9Fd"));
|
|
}
|
|
}
|
|
} |