From 36c44a548799ccdaddd1f3848110cc240fb96f29 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 27 Oct 2022 15:07:04 +1100 Subject: [PATCH] Allow FeatureToggleConstraint to run w/o warden Routing specs and controller specs don't set warden on the request environment. While we could try to re-implement Warden/Devise logic here, it's much easier to not rely on the environment to be set. While I'm usually opposed to changing production code to make testing easier, it does avoid a lot of complication in this case. And maybe it would be handy in other circumstances to have a more defensive approach to checking the logged in user. --- app/constraints/feature_toggle_constraint.rb | 2 +- spec/routing/stripe_spec.rb | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/constraints/feature_toggle_constraint.rb b/app/constraints/feature_toggle_constraint.rb index 1393b007fe..cae850574d 100644 --- a/app/constraints/feature_toggle_constraint.rb +++ b/app/constraints/feature_toggle_constraint.rb @@ -12,6 +12,6 @@ class FeatureToggleConstraint end def current_user(request) - request.env['warden'].user + request.env['warden']&.user end end diff --git a/spec/routing/stripe_spec.rb b/spec/routing/stripe_spec.rb index 54dd76bde2..9ce5ce8c6c 100644 --- a/spec/routing/stripe_spec.rb +++ b/spec/routing/stripe_spec.rb @@ -3,10 +3,6 @@ require "spec_helper" describe "routing for Stripe return URLS", type: :routing do - before do - allow_any_instance_of(FeatureToggleConstraint).to receive(:current_user) { build(:user) } - end - context "checkout return URLs" do it "routes /checkout to checkout#edit" do expect(get: "checkout").