docbrown/spec/services/re_captcha/check_enabled_spec.rb
Anna Buianova 473594f192
Match spam role with existing suspended actions (#20477)
* Started matching spam and suspended roles

* Match spam and suspended roles in most cases

* Fixed check_suspended for unauthenticated users
2023-12-27 20:12:50 +00:00

69 lines
2.5 KiB
Ruby

require "rails_helper"
RSpec.describe ReCaptcha::CheckEnabled, type: :request do
let(:admin) { create(:user, :super_admin) }
let(:recent_user) { create(:user) }
let(:older_user) { create(:user, created_at: 3.months.ago) }
let(:trusted_user) { create(:user, :trusted) }
let(:vomited_user) do
user = create(:user, created_at: 3.months.ago)
create(:vomit_reaction, category: "vomit", reactable: user, user: trusted_user, status: "confirmed")
user
end
describe "ReCaptcha for user actions like Abuse Reports (FeedbackMessages)" do
context "when recaptcha Settings::General keys are not configured" do
it "marks ReCaptcha as not enabled regardless of the param passed in" do
allow(Settings::Authentication).to receive_messages(recaptcha_site_key: nil, recaptcha_secret_key: nil)
expect(described_class.call).to be(false)
expect(described_class.call(older_user)).to be(false)
end
end
context "when recaptcha Settings::General keys are configured" do
before do
allow(Settings::Authentication).to receive_messages(recaptcha_site_key: "someSecretKey",
recaptcha_secret_key: "someSiteKey")
end
it "marks ReCaptcha as enabled when logged out (parameter is nil)" do
expect(described_class.call).to be(true)
end
it "marks ReCaptcha as not enabled when older user is logged in" do
sign_in older_user
expect(described_class.call(older_user)).to be(false)
end
it "marks ReCaptcha as not enabled when admin is logged in" do
sign_in admin
expect(described_class.call(admin)).to be(false)
end
it "marks ReCaptcha as not enabled when trusted user is logged in" do
sign_in trusted_user
expect(described_class.call(trusted_user)).to be(false)
end
it "marks ReCaptcha as enabled when user with vomits is logged in" do
sign_in vomited_user
expect(described_class.call(vomited_user)).to be(true)
end
it "marks ReCaptcha as enabled when a suspended user is logged in" do
older_user.add_role(:suspended)
sign_in older_user
expect(described_class.call(older_user)).to be(true)
older_user.remove_role(:suspended)
end
it "marks ReCaptcha as enabled when a spam user is logged in" do
older_user.add_role(:spam)
sign_in older_user
expect(described_class.call(older_user)).to be(true)
older_user.remove_role(:spam)
end
end
end
end