Skip to main content

Setting request headers

We recommend you to switch to request specs instead of controller specs if you want to set headers in your call. If you still want to set headers in controller specs, you can use request.headers as mentioned below.

Setting a header value in a controller spec

Given a file named "spec/controllers/application_controller_spec.rb" with:

require "rails_helper"

RSpec.describe ApplicationController, type: :controller do
controller do
def show
if request.headers["Authorization"] == "foo"
head :ok
else
head :forbidden
end
end
end

before do
routes.draw { get "show" => "anonymous#show" }
end

context "valid Authorization header" do
it "returns a 200" do
request.headers["Authorization"] = "foo"

get :show

expect(response).to have_http_status(:ok)
end
end

context "invalid Authorization header" do
it "returns a 403" do
request.headers["Authorization"] = "bar"

get :show

expect(response).to have_http_status(:forbidden)
end
end
end

When I run rspec spec

Then the example should pass.