Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ inherit_from: .rubocop_todo.yml

AllCops:
NewCops: enable
TargetRubyVersion: 3.0

Metrics/BlockLength:
CountAsOne: [array, hash, heredoc, method_call]
Expand Down
2 changes: 1 addition & 1 deletion lib/grape_logging/loggers/filter_parameters.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
19 changes: 9 additions & 10 deletions spec/lib/grape_logging/loggers/client_env_spec.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require 'spec_helper'
require 'ostruct'

describe GrapeLogging::Loggers::ClientEnv do
let(:ip) { '10.0.0.1' }
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
32 changes: 15 additions & 17 deletions spec/lib/grape_logging/loggers/filter_parameters_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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: {
Expand Down
19 changes: 9 additions & 10 deletions spec/lib/grape_logging/loggers/request_headers_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down
5 changes: 2 additions & 3 deletions spec/lib/grape_logging/loggers/response_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down