Ste*_*ven 5 rspec ruby-on-rails devise ruby-on-rails-5
我使用 Ruby on Rails 构建了一个 RESTful API,现在只允许经过身份验证的用户发出请求。因此我实现了一个 ApiController:
class ApiController < ApplicationController
include DeviseTokenAuth::Concerns::SetUserByToken
before_action :authenticate_api_v1_user!
end
Run Code Online (Sandbox Code Playgroud)
我使用一个 React 客户端,它会在每个请求中发送所需的身份验证标头。到目前为止一切都运作良好。只是我在模拟请求规范中的登录时遇到问题。
理论上,我会创建一个用户并登录。但是如何将令牌与请求一起发送?
describe 'Items API', type: :request do
# initialize test data
let!(:user) { create(:user) }
let!(:items) { create_list(:item, 10) }
# Test suite for GET /api/v1/items
describe 'GET /api/v1/items' do
# make HTTP get request before each example
before { get '/api/v1/items' }
it 'returns items' do
expect(json).not_to be_empty
expect(json.size).to eq(10)
end
it 'returns status code 200' do
expect(response).to have_http_status(200)
end
end
...
end
Run Code Online (Sandbox Code Playgroud)
请求的关键部分是请求cookie:
authHeaders {
"access-token":"sMKTl2Zx_8S5f12ydhSaPw",
"token-type":"Bearer",
"client":"rzarzdBXCv2SsS9XvYMLVA",
"expiry":"1546427742",
"uid":"104006675969015609263"
}
Run Code Online (Sandbox Code Playgroud)
它与请求一起发送。
您可以向get请求添加标头,如下所示:
get 'path', params: {...}, headers: {...}
Run Code Online (Sandbox Code Playgroud)
https://api.rubyonrails.org/classes/ActionDispatch/Integration/RequestHelpers.html#method-i-get
| 归档时间: |
|
| 查看次数: |
3743 次 |
| 最近记录: |