Я создал RESTful API с использованием Ruby on Rails, и теперь я только позволяю аутентифицированным пользователям делать запросы.Поэтому я реализовал ApiController:
class ApiController < ApplicationController
include DeviseTokenAuth::Concerns::SetUserByToken
before_action :authenticate_api_v1_user!
end
Я использую клиент 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
Важной частью запроса является cookie-файл запроса:
authHeaders {
"access-token":"sMKTl2Zx_8S5f12ydhSaPw",
"token-type":"Bearer",
"client":"rzarzdBXCv2SsS9XvYMLVA",
"expiry":"1546427742",
"uid":"104006675969015609263"
}
Он отправляется вместе с запросом.