diff --git a/lib/grape/middleware/logger.rb b/lib/grape/middleware/logger.rb index bcf51c8..4c79a47 100644 --- a/lib/grape/middleware/logger.rb +++ b/lib/grape/middleware/logger.rb @@ -36,7 +36,7 @@ class Grape::Middleware::Logger < Grape::Middleware::Globals if @app_response.is_a?(Array) after(@app_response[0]) else - after(@app_response.status) + after(@app_response.status) end end @app_response diff --git a/spec/lib/grape/middleware/logger_spec.rb b/spec/lib/grape/middleware/logger_spec.rb index 66787bd..3b7f84a 100644 --- a/spec/lib/grape/middleware/logger_spec.rb +++ b/spec/lib/grape/middleware/logger_spec.rb @@ -49,6 +49,24 @@ describe Grape::Middleware::Logger do expect(subject.call!(env)).to eq app_response end end + + context 'when response is an array' do + let(:app_response_array) { Rack::Response.new [401, 'Auth Failed'], 401, {} } + + it 'calls +after+ with the correct status' do + expect(app).to receive(:call).with(env).and_return(app_response_array) + expect(subject).to receive(:before) + expect(subject).to receive(:after).with(401) + subject.call!(env) + end + + it 'returns the @app_response_array' do + expect(app).to receive(:call).with(env).and_return(app_response_array) + allow(subject).to receive(:before) + allow(subject).to receive(:after) + expect(subject.call!(env)).to eq app_response_array + end + end end describe '#after_failure' do