diff --git a/lib/lhc/scrubbers/headers_scrubber.rb b/lib/lhc/scrubbers/headers_scrubber.rb index 4ba1410..bd1f705 100644 --- a/lib/lhc/scrubbers/headers_scrubber.rb +++ b/lib/lhc/scrubbers/headers_scrubber.rb @@ -25,14 +25,26 @@ def scrub_auth_headers! end def scrub_basic_authentication_headers! - return if auth_options[:basic].blank? || scrubbed['Authorization'].blank? + return if !scrub_basic_authentication_headers? scrubbed['Authorization'].gsub!(auth_options[:basic][:base_64_encoded_credentials], SCRUB_DISPLAY) end def scrub_bearer_authentication_headers! - return if auth_options[:bearer].blank? || scrubbed['Authorization'].blank? + return if !scrub_bearer_authentication_headers? scrubbed['Authorization'].gsub!(auth_options[:bearer_token], SCRUB_DISPLAY) end + + def scrub_basic_authentication_headers? + auth_options[:basic].present? && + scrubbed['Authorization'].present? && + scrubbed['Authorization'].include?(auth_options[:basic][:base_64_encoded_credentials]) + end + + def scrub_bearer_authentication_headers? + auth_options[:bearer].present? && + scrubbed['Authorization'].present? && + scrubbed['Authorization'].include?(auth_options[:bearer_token]) + end end diff --git a/lib/lhc/version.rb b/lib/lhc/version.rb index 647656c..b83a973 100644 --- a/lib/lhc/version.rb +++ b/lib/lhc/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module LHC - VERSION ||= '15.0.0' + VERSION ||= '15.0.1' end diff --git a/spec/request/scrubbed_headers_spec.rb b/spec/request/scrubbed_headers_spec.rb index 2cef2e4..e1a3263 100644 --- a/spec/request/scrubbed_headers_spec.rb +++ b/spec/request/scrubbed_headers_spec.rb @@ -59,19 +59,20 @@ let(:authorization_header) { { 'Authorization' => "Bearer #{bearer_token}" } } let(:auth) { { bearer: -> { bearer_token } } } - it 'provides srubbed request headers' do + it 'scrubs only the bearer token' do expect(request.scrubbed_headers).to include('Authorization' => "Bearer #{LHC::Scrubber::SCRUB_DISPLAY}") expect(request.headers).to include(authorization_header) end - context 'when nothing should get scrubbed' do - before :each do - LHC.config.scrubs = {} - end + it 'scrubs whole "Authorization" header' do + LHC.config.scrubs[:headers] << 'Authorization' + expect(request.scrubbed_headers).to include('Authorization' => LHC::Scrubber::SCRUB_DISPLAY) + expect(request.headers).to include(authorization_header) + end - it 'does not filter beaerer auth' do - expect(request.scrubbed_headers).to include(authorization_header) - end + it 'scrubs nothing' do + LHC.config.scrubs = {} + expect(request.scrubbed_headers).to include(authorization_header) end end @@ -82,19 +83,20 @@ let(:authorization_header) { { 'Authorization' => "Basic #{credentials_base_64_codiert}" } } let(:auth) { { basic: { username: username, password: password } } } - it 'provides srubbed request headers' do + it 'scrubs only credentials' do expect(request.scrubbed_headers).to include('Authorization' => "Basic #{LHC::Scrubber::SCRUB_DISPLAY}") expect(request.headers).to include(authorization_header) end - context 'when nothing should get scrubbed' do - before :each do - LHC.config.scrubs = {} - end + it 'scrubs whole "Authorization" header' do + LHC.config.scrubs[:headers] << 'Authorization' + expect(request.scrubbed_headers).to include('Authorization' => LHC::Scrubber::SCRUB_DISPLAY) + expect(request.headers).to include(authorization_header) + end - it 'does not filter basic auth' do - expect(request.scrubbed_headers).to include(authorization_header) - end + it 'scrubs nothing' do + LHC.config.scrubs = {} + expect(request.scrubbed_headers).to include(authorization_header) end end end