Я понял это, не используя graphlient и faraday (хотя я не пробовал это однажды, я понял, что было не так, так что это может все еще работать, но вот альтернатива).
Изменено sign_in
метод получения запроса вместо посещения:
spec / support / features / session_helpers.rb
def sign_in(user, invalid=false, strategy = :auth0)
invalid ? mock_invalid_auth_hash : mock_valid_auth_hash(user)
get "/auth/#{strategy.to_s}"
Rails.application.env_config["omniauth.auth"] = OmniAuth.config.mock_auth[strategy.to_sym]
get "/auth/#{strategy.to_s}/callback"
end
И в моем тесте rspec-запроса мне это понравилось (я включуцелый тестовый пример на случай, если он кому-нибудь поможет):
spec / support / graphql / client.rb
RSpec.shared_context "GraphQL Client", shared_context: :metadata do
let(:user) { create(:user) }
let(:post_query_as_user) do
sign_in(user)
params = { query: query }
post "/graphql", params: params
end
def data
JSON.parse(response.body)["data"]
end
end
spec / graphql / questions / current_user_queries_spec.rb
require 'rails_helper'
RSpec.describe 'GraphQL::Queries::CurrentUser', type: 'request' do
include_context 'GraphQL Client'
let(:query) do
<<-GRAPHQL
{
current_user {
id
first_name
}
}
GRAPHQL
end
it 'returns the current user with all user attributes' do
post_query_as_user
current_user = data["current_user"]
expect(current_user["first_name"]).to eq(user.first_name)
end
end