diff --git a/.rubocop.yml b/.rubocop.yml index 70e2ca4..c39ca90 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,6 +2,7 @@ inherit_from: .rubocop_todo.yml AllCops: NewCops: enable + TargetRubyVersion: 3.0 Metrics/BlockLength: CountAsOne: [array, hash, heredoc, method_call] diff --git a/lib/grape_logging/loggers/filter_parameters.rb b/lib/grape_logging/loggers/filter_parameters.rb index a169d18..c5f0870 100644 --- a/lib/grape_logging/loggers/filter_parameters.rb +++ b/lib/grape_logging/loggers/filter_parameters.rb @@ -31,7 +31,7 @@ def safe_parameters(request) def clean_parameters(parameters) original_encoding_map = build_encoding_map(parameters) params = transform_key_encoding(parameters, Hash.new { |h, _| [Encoding::ASCII_8BIT, h] }) - cleaned_params = parameter_filter.filter(params).reject { |key, _value| @exceptions.include?(key) } + cleaned_params = parameter_filter.filter(params).except(*@exceptions) transform_key_encoding(cleaned_params, original_encoding_map) end diff --git a/spec/lib/grape_logging/loggers/client_env_spec.rb b/spec/lib/grape_logging/loggers/client_env_spec.rb index 3d490fa..c154aae 100644 --- a/spec/lib/grape_logging/loggers/client_env_spec.rb +++ b/spec/lib/grape_logging/loggers/client_env_spec.rb @@ -1,5 +1,4 @@ require 'spec_helper' -require 'ostruct' describe GrapeLogging::Loggers::ClientEnv do let(:ip) { '10.0.0.1' } @@ -9,9 +8,9 @@ context 'forwarded for' do let(:mock_request) do - OpenStruct.new(env: { - 'HTTP_X_FORWARDED_FOR' => forwarded_for - }) + instance_double(Rack::Request, env: { + 'HTTP_X_FORWARDED_FOR' => forwarded_for + }) end it 'sets the ip key' do @@ -26,9 +25,9 @@ context 'remote address' do let(:mock_request) do - OpenStruct.new(env: { - 'REMOTE_ADDR' => remote_addr - }) + instance_double(Rack::Request, env: { + 'REMOTE_ADDR' => remote_addr + }) end it 'sets the ip key' do @@ -38,9 +37,9 @@ context 'user agent' do let(:mock_request) do - OpenStruct.new(env: { - 'HTTP_USER_AGENT' => user_agent - }) + instance_double(Rack::Request, env: { + 'HTTP_USER_AGENT' => user_agent + }) end it 'sets the ua key' do diff --git a/spec/lib/grape_logging/loggers/filter_parameters_spec.rb b/spec/lib/grape_logging/loggers/filter_parameters_spec.rb index 5cc81a8..4864a9e 100644 --- a/spec/lib/grape_logging/loggers/filter_parameters_spec.rb +++ b/spec/lib/grape_logging/loggers/filter_parameters_spec.rb @@ -1,29 +1,27 @@ require 'spec_helper' -require 'ostruct' describe GrapeLogging::Loggers::FilterParameters do let(:filtered_parameters) { %w[one four] } let(:mock_request) do - OpenStruct.new(params: { - 'this_one' => 'this one', - 'that_one' => 'one', - 'two' => 'two', - 'three' => 'three', - 'four' => 'four', - "\xff" => 'invalid utf8' - }) + instance_double(Rack::Request, params: { + 'this_one' => 'this one', + 'that_one' => 'one', + 'two' => 'two', + 'three' => 'three', + 'four' => 'four', + "\xff" => 'invalid utf8' + }) end let(:mock_request_with_deep_nesting) do deep_clone = -> { Marshal.load Marshal.dump mock_request.params } - OpenStruct.new( - params: deep_clone.call.merge( - 'five' => deep_clone.call.merge( - deep_clone.call.merge({ 'six' => { 'seven' => 'seven', 'eight' => 'eight', 'one' => 'another one' } }) - ) - ) - ) + instance_double(Rack::Request, + params: deep_clone.call.merge( + 'five' => deep_clone.call.merge( + deep_clone.call.merge({ 'six' => { 'seven' => 'seven', 'eight' => 'eight', 'one' => 'another one' } }) + ) + )) end let(:subject) do @@ -79,7 +77,7 @@ end context 'with symbol keys, which occur during automated testing' do - let(:mock_request) { OpenStruct.new(params: { sneaky_symbol: 'hey!' }) } + let(:mock_request) { instance_double(Rack::Request, params: { sneaky_symbol: 'hey!' }) } it 'converts keys to strings' do expect(subject.parameters(mock_request, nil)).to eq(params: { diff --git a/spec/lib/grape_logging/loggers/request_headers_spec.rb b/spec/lib/grape_logging/loggers/request_headers_spec.rb index f34e9b7..dd749f6 100644 --- a/spec/lib/grape_logging/loggers/request_headers_spec.rb +++ b/spec/lib/grape_logging/loggers/request_headers_spec.rb @@ -1,23 +1,22 @@ require 'spec_helper' -require 'ostruct' describe GrapeLogging::Loggers::RequestHeaders do let(:mock_request) do - OpenStruct.new(env: { HTTP_REFERER: 'http://example.com', HTTP_ACCEPT: 'text/plain' }) + instance_double(Rack::Request, env: { HTTP_REFERER: 'http://example.com', HTTP_ACCEPT: 'text/plain' }) end let(:mock_request_with_unhandled_headers) do - OpenStruct.new(env: { - HTTP_REFERER: 'http://example.com', - 'PATH_INFO' => '/api/v1/users' - }) + instance_double(Rack::Request, env: { + HTTP_REFERER: 'http://example.com', + 'PATH_INFO' => '/api/v1/users' + }) end let(:mock_request_with_long_headers) do - OpenStruct.new(env: { - HTTP_REFERER: 'http://example.com', - HTTP_USER_AGENT: 'Mozilla/5.0' - }) + instance_double(Rack::Request, env: { + HTTP_REFERER: 'http://example.com', + HTTP_USER_AGENT: 'Mozilla/5.0' + }) end it 'strips HTTP_ from the parameter' do diff --git a/spec/lib/grape_logging/loggers/response_spec.rb b/spec/lib/grape_logging/loggers/response_spec.rb index c446135..4990c5c 100644 --- a/spec/lib/grape_logging/loggers/response_spec.rb +++ b/spec/lib/grape_logging/loggers/response_spec.rb @@ -1,10 +1,9 @@ require 'spec_helper' -require 'ostruct' describe GrapeLogging::Loggers::Response do context 'with a parseable JSON body' do let(:response) do - OpenStruct.new(body: [{ one: 'two', three: { four: 5 } }]) + instance_double(Rack::Request, body: [{ one: 'two', three: { four: 5 } }]) end it 'returns an array of parsed JSON objects' do @@ -14,7 +13,7 @@ context 'with a body that is not parseable JSON' do let(:response) do - OpenStruct.new(body: 'this is a body') + instance_double(Rack::Request, body: 'this is a body') end it 'just returns the body' do