Merge pull request #94 from leoarnold/leoarnold/ostruct

Remove OpenStruct
This commit is contained in:
Sami Samhuri 2025-12-11 17:46:07 -08:00 committed by GitHub
commit 48ab8c414b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 37 additions and 41 deletions

View file

@ -2,6 +2,7 @@ inherit_from: .rubocop_todo.yml
AllCops:
NewCops: enable
TargetRubyVersion: 3.0
Metrics/BlockLength:
CountAsOne: [array, hash, heredoc, method_call]

View file

@ -31,7 +31,7 @@ module GrapeLogging
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

View file

@ -1,5 +1,4 @@
require 'spec_helper'
require 'ostruct'
describe GrapeLogging::Loggers::ClientEnv do
let(:ip) { '10.0.0.1' }
@ -9,7 +8,7 @@ describe GrapeLogging::Loggers::ClientEnv do
context 'forwarded for' do
let(:mock_request) do
OpenStruct.new(env: {
instance_double(Rack::Request, env: {
'HTTP_X_FORWARDED_FOR' => forwarded_for
})
end
@ -26,7 +25,7 @@ describe GrapeLogging::Loggers::ClientEnv do
context 'remote address' do
let(:mock_request) do
OpenStruct.new(env: {
instance_double(Rack::Request, env: {
'REMOTE_ADDR' => remote_addr
})
end
@ -38,7 +37,7 @@ describe GrapeLogging::Loggers::ClientEnv do
context 'user agent' do
let(:mock_request) do
OpenStruct.new(env: {
instance_double(Rack::Request, env: {
'HTTP_USER_AGENT' => user_agent
})
end

View file

@ -1,11 +1,10 @@
require 'spec_helper'
require 'ostruct'
describe GrapeLogging::Loggers::FilterParameters do
let(:filtered_parameters) { %w[one four] }
let(:mock_request) do
OpenStruct.new(params: {
instance_double(Rack::Request, params: {
'this_one' => 'this one',
'that_one' => 'one',
'two' => 'two',
@ -17,13 +16,12 @@ describe GrapeLogging::Loggers::FilterParameters do
let(:mock_request_with_deep_nesting) do
deep_clone = -> { Marshal.load Marshal.dump mock_request.params }
OpenStruct.new(
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 @@ describe GrapeLogging::Loggers::FilterParameters do
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: {

View file

@ -1,20 +1,19 @@
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: {
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: {
instance_double(Rack::Request, env: {
HTTP_REFERER: 'http://example.com',
HTTP_USER_AGENT: 'Mozilla/5.0'
})

View file

@ -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 @@ describe GrapeLogging::Loggers::Response do
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