Sha256: 16c55545857390e8e17110f91ca4275113ff0be076ef9d8cf63336158e2efd0e

Contents?: true

Size: 1.94 KB

Versions: 12

Compression:

Stored size: 1.94 KB

Contents

require "rack/test"
require "rack/hal_browser/redirect"

module Rack
  module HalBrowser
    describe Redirect do
      include Rack::Test::Methods

      let(:inner_app) do
        ->(_env) { [200, {"Content-Type" => "text/html"}, ["All good!"]] }
      end

      let(:app) { Redirect.new(inner_app) }

      it "passes non-html requests straight through" do
        get "/", {}, "HTTP_ACCEPT" => "application/hal+json"
        expect(last_response).to be_ok
        expect(last_response.headers["Content-Type"]).to eq "text/html"
        expect(last_response.body).to eq "All good!"
      end

      context "when client accepts html and json" do

        it "redirects to the HAL browser" do
          get "/", {}, "HTTP_ACCEPT" => "text/html,application/hal+json"
          follow_redirect!
          expect(last_request.url).to eq "http://example.org/hal-browser/browser.html"
        end

        it "passes the original request path to the HAL browser via the fragment" do
          get "/foo", {}, "HTTP_ACCEPT" => "text/html,application/hal+json"
          expect(last_response.headers["Location"]).to eq "/hal-browser/browser.html#/foo"
        end

      end

      context "when a path is excluded" do

        let(:app) { Redirect.new(inner_app, :exclude => "/foo") }

        it "passes requests to the excluded path straight through" do
          get "/foo", {}, "HTTP_ACCEPT" => "text/html"
          expect(last_response).to be_ok
          expect(last_response.headers["Content-Type"]).to eq "text/html"
          expect(last_response.body).to eq "All good!"
        end

      end

      context "when clent uses non GET verb" do

        it "passes requests to the excluded path straight through" do
          post "/foo", {}, "HTTP_ACCEPT" => "text/html"
          expect(last_response).to be_ok
          expect(last_response.headers["Content-Type"]).to eq "text/html"
          expect(last_response.body).to eq "All good!"
        end

      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
pact_broker-2.89.1 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.89.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.88.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.87.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.86.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.85.1 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.85.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.84.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.83.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.82.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.81.0 spec/lib/rack/hal_browser/redirect_spec.rb
pact_broker-2.80.0 spec/lib/rack/hal_browser/redirect_spec.rb