2011-07-31 2 views
1

방금 ​​작성한 ASP.Net MVC 3 응용 프로그램은 AccountsController을 제외한 모든 컨트롤러에 대한 인증이 필요합니다. [Authenticate]으로 내 컨트롤러를 모두 장식하는 대신 두 가지 사용자 지정 특성을 작성했습니다. 처음은 AuthorizationAttribute에서 상속 받고 현재 작업이 다른 작업으로 장식되어 있는지 확인합니다 (AllowAnonymous). 그렇지 않은 경우 폼 인증을 사용하여 현재 사용자가 인증되었는지 확인하고 그렇지 않은 경우 로그인 페이지로 리디렉션합니다.컨트롤러 테스트는 ASP.Net MVC에서 전역 필터를 무시합니까?

이것을 모든 컨트롤러에 적용하려면 GlobalFilterCollectionRegisterGlobalFilters에 사용자 정의 인증 속성을 추가했습니다 (global.asax.cs).

이 모든 것은 브라우저에서 작동하지만 MVC 인터넷 응용 프로그램과 함께 제공되는 기본 테스트를 실행하여 홈페이지의 HomeControllerTest 테스트가 통과되고 "ASP.NET MVC에 오신 것을 환영합니다."라는 메시지가 나타나면 놀랐습니다. 텍스트가 ViewBag에 있습니다. 나는이 테스트가 브라우저에서 볼 때처럼 사용자가 로그인하지 않았다면 로그인 페이지로 리다이렉트 할 때처럼 테스트가 실패 할 것으로 예상했을 것이다. 인증에 대한 내 접근법이 잘못되었거나 테스트에 무언가를 쓸 필요가 있는가? 전역 필터를 적용 하시겠습니까? 단위 테스트를 진행하면 필터가 추가되고 있음을 알 수 있지만 예상대로 적용되지 않습니다.

답변

2

당신의 접근 방식은 괜찮은 것 같습니다. 그러나 컨트롤러와 작업 필터를 별도로 테스트해야합니다. following question

+0

링크를 제공해 주셔서 감사합니다. 나는 지금 무엇을해야하는지 이해합니다. – Eifion

관련 문제