c# - 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
}
}
解决方案
推荐阅读
- javascript - 使用 Dot Net Report Builder 导出为 PDF 错误
- php - 如何在 Laravel 8 微风中注册后停止自动登录
- javascript - 多次导入相同模块时的内存影响(webpack)
- genome - Gviz BiomartGeneRegionTrack 如何删除符号名称?
- ethereum - 首次为 dApp 启动 geth
- javascript - 如何使用 JS 为 JSON 中的每个对象单独输出一个数组?
- python - Numpy:创建一个“超集”数组视图
- vue.js - Vue为什么在组件上未定义道具
- asp.net-web-api - 如何在 ASP.Net Core (WebAPI) 中基于 HTTP 动词和其他属性以声明方式指定授权策略
- swift - 为什么只显示一个字段?