# spec/requests/cors_headers_spec.rb require 'spec_helper' describe "CORS OPTIONS requests" do # rubocop:disable RSpec/DescribeClass context 'when cors headers are enabled' do before do Qa.config.enable_cors_headers end it 'return CORS header info for index' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/terms/loc" correct_cors_response? end it 'return CORS header info for index with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/terms/local/states" correct_cors_response? end it 'return CORS header info for search' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/loc" correct_cors_response? end it 'return CORS header info for search with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/local/two_args?q=a query" correct_cors_response? end it 'return CORS header info for show' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/mesh/D000001" correct_cors_response? end it 'return CORS header info for show with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/local/states/OH" correct_cors_response? end it 'return CORS header info for linked_data/search' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/linked_data/OCLC_FAST?q=my_query&maximumRecords=3" correct_cors_response? end it 'return CORS header info for linked_data/show' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/linked_data/OCLC_FAST/n24" correct_cors_response? end end def correct_cors_response? expect(response.code).to eq('204') expect(response.headers['Access-Control-Allow-Origin']).to eq '*' expect(response.headers['Access-Control-Allow-Methods']).to eq 'GET, OPTIONS' end context 'when cors headers are disabled' do before do Qa.config.disable_cors_headers end it 'report method not supported for index' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/terms/loc" expect(response.code).to eq('501') end it 'report method not supported for index with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/terms/local/states" expect(response.code).to eq('501') end it 'report method not supported for search' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/loc" expect(response.code).to eq('501') end it 'report method not supported for search with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/local/two_args?q=a query" expect(response.code).to eq('501') end it 'report method not supported for show' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/mesh/D000001" expect(response.code).to eq('501') end it 'report method not supported for show with subauthority' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/local/states/OH" expect(response.code).to eq('501') end it 'report method not supported for linked_data/search' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/search/linked_data/OCLC_FAST?q=my_query&maximumRecords=3" expect(response.code).to eq('501') end it 'report method not supported for linked_data/show' do reset! integration_session.__send__ :process, 'OPTIONS', "/qa/show/linked_data/OCLC_FAST/n24" expect(response.code).to eq('501') end end end