在 Rails 5 API 的规范中传递 Devise 令牌
Passing Devise token in specs for Rails 5 API
我有一个使用帐户和用户构建的基本 Rails API。当我删除时所有帐户规范都通过了...
before_action :authenticate_user!
但是有了它,我很难让规格通过。
# Note `json` is a custom helper to parse JSON responses
RSpec.describe 'Account API', type: :request do
# test data
let!(:user) { create(:user) }
let!(:accounts) { create_list(:account, 10, user_id: user.id) }
let(:account_id) { accounts.first.id }
# GET /accounts
describe 'GET /accounts' do
# HTTP request before examples
before do
get '/accounts'
request.headers.merge! user.create_new_auth_token
end
it 'returns accounts' 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
如您所见,我试图在执行块之前将身份验证令牌与此行合并...
request.headers.merge! user.create_new_auth_token
但这不起作用。相反,我得到 json.size == 1 和 http_status of 401 unauthorized.
我能够通过在顶部声明一个变量来修复它...
let(:auth_headers) { create(:user).create_new_auth_token }
并且在我的规范中是这样使用它的...
before { get '/accounts', headers: auth_headers }
我有一个使用帐户和用户构建的基本 Rails API。当我删除时所有帐户规范都通过了...
before_action :authenticate_user!
但是有了它,我很难让规格通过。
# Note `json` is a custom helper to parse JSON responses
RSpec.describe 'Account API', type: :request do
# test data
let!(:user) { create(:user) }
let!(:accounts) { create_list(:account, 10, user_id: user.id) }
let(:account_id) { accounts.first.id }
# GET /accounts
describe 'GET /accounts' do
# HTTP request before examples
before do
get '/accounts'
request.headers.merge! user.create_new_auth_token
end
it 'returns accounts' 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
如您所见,我试图在执行块之前将身份验证令牌与此行合并...
request.headers.merge! user.create_new_auth_token
但这不起作用。相反,我得到 json.size == 1 和 http_status of 401 unauthorized.
我能够通过在顶部声明一个变量来修复它...
let(:auth_headers) { create(:user).create_new_auth_token }
并且在我的规范中是这样使用它的...
before { get '/accounts', headers: auth_headers }