【发布时间】:2018-02-14 10:16:16
【问题描述】:
因此,我们正在将 Rails 应用程序从 Rails 4.2 升级到 Rails 5.1。一切都很顺利,直到我也必须升级我们的测试。我们有一个 oauth_spec 文件,用于检查我们的 Auth 流程是否一切正常。
我目前正在更改 Rspec 语法,所以一切正常,但我真的坚持我们的一项测试。它一直返回给我 401-未经授权,我想我已经阅读了我在 StackOverflow 上可以找到的所有内容。
这是我们的测试在 4.2 中的样子:
it "grants access to a user's data when he sets an Authentication token as a request parameter" do
data =
{
"grant_type" => "password",
"password" => password,
"username" => user.email
}
post('/oauth/token', data, {'HTTP_ACCEPT' => "application/json"})
token = json["access_token"]
get('/users/me', data, {'HTTP_ACCEPT' => "application/json", "Authorization" => "Bearer #{token}"})
expect(response).to have_http_status(200)
expect(json["email"]).to eq(user.email)
end
这是我目前得到的:
it "grants access to a user's data when he sets an Authentication token as a request parameter" do
data =
{
"grant_type" => "password",
"password" => password,
"username" => user.email
}
post "/oauth/token", params: data
token = json["access_token"]
header = {"Authorization": "Bearer #{token}", "Accept": "application/json"}
request.headers.merge!(header)
get '/users/me'
expect(response).to have_http_status(200)
expect(json["email"]).to eq(user.email)
end
第一个帖子请求工作正常,并给我我的不记名。但是下一次休息,我总是得到:
失败/错误:expect(response).to have_http_status(200) 期望响应的状态码为 200,但它是 401
有人知道我可以做些什么来完成这项工作吗?
【问题讨论】:
-
是否有特定原因将语法从
get('/users/me', data, {'HTTP_ACCEPT' => "application/json", "Authorization" => "Bearer #{token}"})更改为手动将标头添加到request对象然后get '/users/me'?
标签: ruby-on-rails rspec ruby-on-rails-5 doorkeeper