File: setting_request_headers.feature

package info (click to toggle)
ruby-rspec-rails 7.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,796 kB
  • sloc: ruby: 11,068; sh: 198; makefile: 6
file content (49 lines) | stat: -rw-r--r-- 1,367 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Feature: 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.

  Scenario: Setting a header value in a controller spec
    Given a file named "spec/controllers/application_controller_spec.rb" with:
      """ruby
      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