2014-10-25 11 views
2

저는 단일 게시 방법과 단일 가져 오기 방법을 가진 패드 리노 컨트롤러를 보유하고 있습니다. 랙 테스트를 사용하여 get 메소드를 테스트 할 수 있지만 post 메소드는 테스트 할 수 없습니다. 내가 테스트 할 때 요청은 403을 리턴한다. 나는 padrino가 csrf 보호 기능을 내장하고 있기 때문에 생각한다. 나는 set :protect_from_csrf, true이라는 줄을 주석으로 처리 할 수 ​​있기 때문에 post route를 테스트 할 수있다. 분명히 csrf가 유용하기 때문에이 줄을 주석 처리하고 싶지 않습니다. 테스트 목적으로이 경로를 테스트하기 위해 임시 액세스 권한을 얻으려면 어떻게해야합니까?시험 패드 리노 방법은 csrf에 의해 중지됩니다

컨트롤러

SailPowerCourses::Admin.controllers :owners do 

    get :index do 
    puts 'hello' 
    end 

    post :index do 
    puts params 
    end 

end 

테스트```

답변

2

class OwnersControllerTest < MiniTest::Test 

    def setup 
    app SailPowerCourses::Admin 
    end 

    def test_creates_an_owner 
    email = '[email protected]' 
    assert_empty Owner 
    post '/owners', owner: {email: email} 
    puts last_response.status 
    refute_empty Owner 

    end 

    def test_other 
    email = '[email protected]' 
    get '/owners', owner: {email: email} 
    end 
end 

에 액세스하고 설정을 변경하기 위해 블록을 사용할 수 있습니다 minitest에서 응용 프로그램을 설정. csrf 보호와 같은 나는 다음과 같은 최선의 해결책을 찾았다. test_config.rb에서 csrf 보호 기능을 해제 한 상태로 앱 버전을 설정했습니다.

class OwnersControllerTest < MiniTest::Test 

    def setup 
    app SailPowerCourses::Admin do 
     set :protect_from_csrf, false 
    end 
    end 

    def test_creates_an_owner 
    email = '[email protected]' 
    assert_empty Owner 
    post '/owners', owner: {email: email} 
    puts last_response.status 
    refute_empty Owner 

    end 

    def test_other 
    email = '[email protected]' 
    get '/owners', owner: {email: email} 
    end 
end