docbrown/spec/services/re_captcha/check_enabled_spec.rb
Jacob Herrington a5b2d109d5
Rename banned and comment_banned roles (#12270)
* Rename banned and comment_banned roles

* Add data update script to rename roles containing 'ban'

* Add named error for Suspended users

* Update unidiomatic method names

* Rename misc banned to suspended

* Apply suggestions from code review

Co-authored-by: Michael Kohl <me@citizen428.net>

* Add unit tests for suspended methods

This commit also adds TODO comments for removing banned and
comment_banned from the codebase after data update scripts have
successfully run on all of our Forems.

Co-authored-by: Michael Kohl <me@citizen428.net>
2021-04-06 10:12:14 -05:00

63 lines
2.3 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(:vomitted_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 SiteConfig keys are not configured" do
it "marks ReCaptcha as not enabled regardless of the param passed in" do
allow(SiteConfig).to receive(:recaptcha_site_key).and_return(nil)
allow(SiteConfig).to receive(:recaptcha_secret_key).and_return(nil)
expect(described_class.call).to be(false)
expect(described_class.call(older_user)).to be(false)
end
end
context "when recaptcha SiteConfig keys are configured" do
before do
allow(SiteConfig).to receive(:recaptcha_site_key).and_return("someSecretKey")
allow(SiteConfig).to receive(:recaptcha_secret_key).and_return("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 vomitted_user
expect(described_class.call(vomitted_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
end
end
end