Điều này có lẽ sẽ trở thành trường hợp chỉ cần một cặp mắt khác. Tôi phải thiếu một cái gì đó, nhưng tôi không thể hiểu tại sao loại điều này không thể được kiểm tra. Tôi về cơ bản cố gắng để đảm bảo rằng người dùng không được thẩm định không thể truy cập vào xem bằng cách đánh dấu các bộ điều khiển với [Duyệt] thuộc tính và tôi đang cố gắng để kiểm tra này bằng cách sử dụng đoạn mã sau:Kiểm thử đơn vị ASP.Net MVC Ủy quyền thuộc tính để xác minh chuyển hướng đến trang đăng nhập
[Fact]
public void ShouldRedirectToLoginForUnauthenticatedUsers()
{
var mockControllerContext = new Mock<ControllerContext>()
{ DefaultValue = DefaultValue.Mock };
var controller = new MyAdminController()
{ControllerContext = mockControllerContext.Object};
mockControllerContext.Setup(c =>
c.HttpContext.Request.IsAuthenticated).Returns(false);
var result = controller.Index();
Assert.IsAssignableFrom<RedirectResult>(result);
}
Các RedirectResult Tôi đang tìm là một số dấu hiệu cho thấy người dùng đang được chuyển đến biểu mẫu đăng nhập, nhưng thay vào đó ViewResult luôn được trả về và khi gỡ lỗi tôi có thể thấy rằng phương thức Index() được nhấn thành công ngay cả khi người dùng không được xác thực.
Tôi có làm gì sai không? Thử nghiệm ở cấp độ sai? Tôi có nên thử nghiệm ở cấp độ tuyến đường cho loại điều này không?
Tôi biết rằng thuộc tính [Ủy quyền] đang hoạt động, vì khi tôi lật trang, màn hình đăng nhập thực sự bị ép buộc tôi - nhưng làm cách nào để xác minh điều này trong thử nghiệm?
Phương pháp chỉ mục và bộ điều khiển rất đơn giản chỉ để tôi có thể xác minh hành vi. Tôi đã bao gồm họ cho đầy đủ:
[Authorize]
public class MyAdminController : Controller
{
public ActionResult Index()
{
return View();
}
}
Bất kỳ giúp đánh giá cao ...
Cảm ơn Dylan - Tôi nghĩ rằng tôi có thể thử nghiệm ở cấp độ sai. Tôi hài lòng với ý tưởng "giả định" rằng nếu bộ điều khiển bị tấn công, người dùng được xác thực. P.S. Bạn có chắc là nó đã được thử nghiệm trong khuôn khổ không? Tôi có thể thấy một vài bài kiểm tra cung cấp IPrincipal hợp lệ, nhưng không ai kiểm tra trường hợp không hợp lệ ;-) – RobertTheGrey
Er, no ... đã không thực sự xác minh rằng trường hợp kiểm tra bản thân mình; Tôi tin tưởng các băng đảng MVC đã có nó đúng. Lỗi của tôi! –
Tôi thích câu trả lời cho lý do tại sao nó không phải là cách tiếp cận đúng, nhưng tôi không thuyết phục về đối số "tính năng này được thử nghiệm trong khuôn khổ và hoạt động". Tôi tin rằng thuộc tính đang hoạt động đúng, đó là công việc của khung công tác, nhưng tôi vẫn muốn khẳng định phương thức nào của các bộ điều khiển của tôi sử dụng thuộc tính. – Mathias