Sha256: 7314ca86535275e3f110334c655651ae7ec451cbcb2cd59ab5b0e3736b4ac18d

Contents?: true

Size: 1.55 KB

Versions: 101

Compression:

Stored size: 1.55 KB

Contents

require 'rails_helper'
require 'rack/test'
require 'rack/cors'

class CaptureResult
  def initialize(app, options = {})
    @app = app
    @result_holder = options[:holder]
  end

  def call(env)
    env['HTTP_ACCESS_CONTROL_REQUEST_PRIVATE_NETWORK'] = 'true'
    response = @app.call(env)
    @result_holder.cors_result = env[Rack::Cors::RACK_CORS]
    response
  end
end

describe Rack::Cors do

  include Rack::Test::Methods

  attr_accessor :cors_result

  def load_app(name, options = {})
    test = self
    Rack::Builder.new do
      use CaptureResult, holder: test
      eval File.read(File.dirname(__FILE__) + "/#{name}.ru")
      use FakeProxy if options[:proxy]
      map('/') do
        run(lambda do |_env|
          [
            200,
           {
              'Content-Type' => 'text/html',
            },
            ['success']
          ]
        end)
      end
    end
  end

  let(:app) { load_app('test') }

  describe 'preflight requests' do
    it 'should allow private network' do
      preflight_request('http://localhost:3000', '/')
      assert !last_response.headers['Access-Control-Allow-Private-Network'].nil?
      assert last_response.headers['Access-Control-Allow-Private-Network'] == 'true'
    end
  end

  protected

  def preflight_request(origin, path, opts = {})
    header 'Origin', origin
    unless opts.key?(:method) && opts[:method].nil?
      header 'Access-Control-Request-Method', opts[:method] ? opts[:method].to_s.upcase : 'GET'
    end
    header 'Access-Control-Request-Headers', opts[:headers] if opts[:headers]
    options path
  end
end

Version data entries

101 entries across 101 versions & 1 rubygems

Version Path
forest_liana-9.10.0 spec/requests/cors_spec.rb
forest_liana-9.9.1 spec/requests/cors_spec.rb
forest_liana-9.9.0 spec/requests/cors_spec.rb
forest_liana-9.8.0 spec/requests/cors_spec.rb
forest_liana-9.7.0 spec/requests/cors_spec.rb
forest_liana-9.6.4 spec/requests/cors_spec.rb
forest_liana-9.6.3 spec/requests/cors_spec.rb
forest_liana-9.6.0 spec/requests/cors_spec.rb
forest_liana-9.5.7 spec/requests/cors_spec.rb
forest_liana-9.5.6 spec/requests/cors_spec.rb
forest_liana-9.5.5 spec/requests/cors_spec.rb
forest_liana-9.5.4 spec/requests/cors_spec.rb
forest_liana-9.5.3 spec/requests/cors_spec.rb
forest_liana-9.5.2 spec/requests/cors_spec.rb
forest_liana-9.5.1 spec/requests/cors_spec.rb
forest_liana-9.5.0 spec/requests/cors_spec.rb
forest_liana-9.4.3 spec/requests/cors_spec.rb
forest_liana-9.4.2 spec/requests/cors_spec.rb
forest_liana-9.4.1 spec/requests/cors_spec.rb
forest_liana-9.4.0 spec/requests/cors_spec.rb