Модульное тестирование паролей в ASP.NET Core

У меня есть CustomPasswordValidator.cs

 public class CustomPasswordValidator
{
    public int MinLength { get; set; }
    public int MaxLength { get; set; }


    public Task<IdentityResult> ValidateAsync(string item)

    {
        IdentityError errors = new IdentityError();
        MinLength = 8;
        MaxLength = 16;
        if (String.IsNullOrEmpty(item) || item.Length < MinLength || item.Length > MaxLength)

        {

            errors.Description = "password must be of minimum 8 characters ";
            return Task.FromResult(IdentityResult.Failed(errors));
        }
        //Minimum eight charachters and maximum 16 characters, at least one uppercase letter, one number and no spaces
        string pattern = @"^(?=.*\d+)(?=.*[a-zA-Z])[0-9a-zA-Z@#$%^&*-_+={}|:‘,.?`~]{8,16}$";
        //@"^(?=.*[a-z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,16}";
        if (!Regex.IsMatch(item, pattern))

        {
            errors.Description = "password must at least have one uppercase letter, one number and no spaces ";
            return Task.FromResult(IdentityResult.Failed(errors));
        }

        return Task.FromResult(IdentityResult.Success);
    }
}

И контроллер, который вызывает класс валидатора:

   public class ValidatePasswordController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public JsonResult ChangePassword(ChangePasswordRequest user)
    {
        //get user data 
        string Password = user.Password;
        CustomPasswordValidator CheckPWD = new CustomPasswordValidator();
        var result = CheckPWD.ValidateAsync(Password);
        var errors = result.Result.Errors.ToArray();
        string Description = errors[0].Description;
        return Json(Description);
    }
}

Я новичок в использовании модульного тестирования с TestTools.UnitTesting. Я хочу создать класс модульного теста, который гарантирует, что верный результат возвращается. Как я могу подойти к этому

  class PasswordValidatorTest
{

    [TestMethod]
    public void TestPWDValidation()
    {
        var password = "Thi$user12345";
        var w = new ValidatePasswordController() { }; //arrange
        //act


    }
}

0 ответов

Другие вопросы по тегам