diff --git a/lib/castle/middleware/authenticating.rb b/lib/castle/middleware/authenticating.rb index 127adb3..39a4fac 100644 --- a/lib/castle/middleware/authenticating.rb +++ b/lib/castle/middleware/authenticating.rb @@ -26,9 +26,11 @@ def call(env) # [status, headers, body] app_result = app.call(env) + status, headers = app_result + return app_result if app_result.nil? # Find a matching event from the config - mapping = @event_mapping.find_by_rack_request(app_result[0].to_s, path, app_result[1], req, true).first + mapping = @event_mapping.find_by_rack_request(status.to_s, path, headers, req, true).first return app_result if mapping.nil? diff --git a/lib/castle/middleware/sensor.rb b/lib/castle/middleware/sensor.rb index baad5e5..da64337 100644 --- a/lib/castle/middleware/sensor.rb +++ b/lib/castle/middleware/sensor.rb @@ -19,7 +19,6 @@ def initialize(app) def call(env) app_result = app.call(env) - status, headers, body = app_result return app_result unless qualify_for_adding_cjs?(status, headers) diff --git a/lib/castle/middleware/tracking.rb b/lib/castle/middleware/tracking.rb index 112973f..0c22285 100644 --- a/lib/castle/middleware/tracking.rb +++ b/lib/castle/middleware/tracking.rb @@ -28,9 +28,11 @@ def call(env) # [status, headers, body] app_result = app.call(env) + status, headers = app_result + return app_result if app_result.nil? # Find a matching track event from the config - mappings = @event_mapping.find_by_rack_request(app_result[0].to_s, path, app_result[1], req, false) + mappings = @event_mapping.find_by_rack_request(status.to_s, path, headers, req, false) mappings.each do |mapping| resource ||= configuration.services.provide_user.call(req, true) diff --git a/spec/castle/middleware/authenticating_spec.rb b/spec/castle/middleware/authenticating_spec.rb index f243027..1637bbd 100644 --- a/spec/castle/middleware/authenticating_spec.rb +++ b/spec/castle/middleware/authenticating_spec.rb @@ -52,6 +52,13 @@ def params allow(::Castle::Middleware::PropertiesProvide).to receive(:call).and_return(properties_provide) end + context 'when response is nil' do + let(:response) { nil } + let(:mapping) { spy } + + it { expect(call).to be(nil) } + end + context 'when a mapping exists' do let(:mapping) { spy } diff --git a/spec/castle/middleware/sensor_spec.rb b/spec/castle/middleware/sensor_spec.rb index 8454e22..d5b84e7 100644 --- a/spec/castle/middleware/sensor_spec.rb +++ b/spec/castle/middleware/sensor_spec.rb @@ -75,6 +75,12 @@ def xhr? describe '#call' do subject { described_class.new(app).call(env) } + context 'when response is nil' do + let(:response) { nil } + + it { is_expected.to be(nil) } + end + context 'with HTML body' do let(:status) { 200 } let(:user) { nil } diff --git a/spec/castle/middleware/tracking_spec.rb b/spec/castle/middleware/tracking_spec.rb index 1cab5f5..a0dddc4 100644 --- a/spec/castle/middleware/tracking_spec.rb +++ b/spec/castle/middleware/tracking_spec.rb @@ -57,6 +57,13 @@ def path allow(::Castle::Middleware::PropertiesProvide).to receive(:call).and_return(properties_provide) end + context 'when response is nil' do + let(:response) { nil } + let(:mapping) { spy } + + it { expect(call).to be(nil) } + end + context 'when a mapping exists' do let(:mapping) { spy }