gpt4 book ai didi

ruby - 测试 padrino post 方法被 csrf 停止

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:27 27 4
gpt4 key购买 nike

我有一个 padrino Controller ,只有一个 post 方法和一个 get 方法。我可以使用 rack-test 来测试 get 方法而不是 post 方法。当我测试请求返回 403 时。我认为这是因为 padrino 的内置 csrf 保护,因为当我注释掉带有 set :protect_from_csrf, true 的行时,我可以测试发布路由。显然我不想注释掉这一行,因为 csrf 很有用。我如何获得临时访问权来测试这些路由以进行测试?

Controller

SailPowerCourses::Admin.controllers :owners do

get :index do
puts 'hello'
end

post :index do
puts params
end

end

测试

class OwnersControllerTest < MiniTest::Test

def setup
app SailPowerCourses::Admin
end

def test_creates_an_owner
email = 'test@example.com'
assert_empty Owner
post '/owners', owner: {email: email}
puts last_response.status
refute_empty Owner

end

def test_other
email = 'test@example.com'
get '/owners', owner: {email: email}
end
end

```

最佳答案

在 minitest 中设置应用程序时,您可以使用 block 来访问和更改设置。比如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 = 'test@example.com'
assert_empty Owner
post '/owners', owner: {email: email}
puts last_response.status
refute_empty Owner

end

def test_other
email = 'test@example.com'
get '/owners', owner: {email: email}
end
end

关于ruby - 测试 padrino post 方法被 csrf 停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26563956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com