我已经为我的域对象编写测试一段时间了,但我仍然不太确定如何在我的 Web 项目中进行安全性测试。某些环境中的某些用户可以访问我的模型等的某些属性,但是您将如何进行测试?现在,我将其基于当前经过身份验证的用户,但我将如何注入(inject)虚假的身份验证提供程序?
这可能是一个愚蠢的问题,但如果有人能帮助我摆脱测试黑暗时代,我将不胜感激。
最佳答案
该链接是一种方式,但使用 Mock 会更好:
Mock<ControllerContext> MockContext(string userName)
{
var mockContext = new Mock<ControllerContext>();
// mock an authenticated user
mockContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(userName);
mockContext.SetupGet(p => p.HttpContext.User.Identity.IsAuthenticated).Returns(true);
return mockContext;
}
[TestMethod]
public void DinnersController_Delete_Should_Fail_With_InvalidOwner_Given_Wrong_User()
{
//set by default
var mockContext = MockContext("scottha");
// mock an authenticated user
_dinnerController.ControllerContext = mockContext.Object;
ViewResult result = _dinnerController.Delete(1, "") as ViewResult;
Assert.AreEqual("InvalidOwner", result.ViewName);
}
关于asp.net-mvc - 您如何测试 ASP MVC 应用程序的基于用户的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/496393/