2011-05-01 4 views
0

rails_admin을 사용하고 있습니다. 내 레일 3 응용 프로그램 및 오이 액세스 제어 테스트를 작성하고 있습니다.cucumber & capybara로 액세스 제어 테스트하기

Scenario: An authenticated user cannot access site administration 
    Given I am an authenticated user "kate", "[email protected]" 
    When I visit the administration page 
    Then I should see access denied 

나는 문자열 "관리 페이지를 일치시킬 수 있습니다 :

은 내가 명시 적으로 같은 테스트를하면 사람이없는 관리자가

(예를 들어) rails_admin의 모든 경로에 액세스 할 수 있는지 테스트 할 "을"rails_admin_dashboard_path "경로에 추가하고 테스트를 통과하도록하십시오. 그러나 이것은 응용 프로그램을 잘못된 방법으로 테스트하는 것으로 보입니다. 모든 경로를 테스트하고 싶다. (어쨌든 루프). 이 같은

뭔가 :

Scenario: An authenticated user cannot access site administration 
    Given I am an authenticated user "kate", "[email protected]" 
    When I visit ANY administration page 
    Then I should see access denied 

사람이 날이 효과적으로을 테스트하는 방법에 대한 조언을 수 있을까요? 올바른 접근 방식을 취하고 있습니까? 대신 rspec에서이 작업을 수행해야합니까?

당신이 말할 수 있듯이, 나는 조금 n00b입니다.

답변

1

나는 당신이 당신의 오이 시나리오에서 가능한 모든 경로를 테스트하는 것을 목표로해야한다고 생각하지 않습니다 . Andrea S.의 말처럼 모든 관리 컨트롤러에 공통된 기반이 있다면 관리 홈 페이지를 확인하는 것으로 충분합니다.

1

한 가지 방법은 다른 모든 관리자/컨트롤러가 상속하는 관리자 네임 스페이스에서 기본 컨트롤러를 만드는 것입니다. 해당 기본 컨트롤러에 필터를 추가하여 관리자 인증을 확인할 수 있습니다. 그래서 같이 :

#app/controllers/admin/base.rb 

class Admin::Base < ApplicationController 
    before_filter :ensure_admin_logged_in 
end 

그리고 관리자 네임 스페이스에있는 다른 모든 컨트롤러가이 일에서 상속 :

#app/controllers/admin/Pages.rb 
class Admin::PagesController < Admin::Base 
    layout "admin" 
end 
+0

내 액세스 제어를 구현하는 좋은 방법 인 것 같습니다. 고맙습니다. 하지만 어떻게 이걸 테스트 할 수 있었 니? – Rimian