mirror of
https://github.com/discourse/discourse.git
synced 2025-05-21 18:12:32 +08:00
DEV: Convert email_in_min_trust to groups (#24515)
This change converts the `email_in_min_trust` site setting to `email_in_allowed_groups`. See: https://meta.discourse.org/t/283408 - Hides the old setting - Adds the new site setting - Add a deprecation warning - Updates to use the new setting - Adds a migration to fill in the new setting if the old setting was changed - Adds an entry to the site_setting.keywords section - Updates tests to account for the new change After a couple of months we will remove the `email_in_min_trust` setting entirely. Internal ref: /t/115696
This commit is contained in:
@ -948,6 +948,7 @@ RSpec.describe Email::Receiver do
|
||||
Fabricate.build(:secondary_email, email: "discourse@bar.com"),
|
||||
Fabricate.build(:secondary_email, email: "someone@else.com"),
|
||||
],
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
|
||||
user2 =
|
||||
@ -958,6 +959,7 @@ RSpec.describe Email::Receiver do
|
||||
Fabricate.build(:secondary_email, email: "team@bar.com"),
|
||||
Fabricate.build(:secondary_email, email: "wat@bar.com"),
|
||||
],
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
|
||||
expect { process(:cc) }.to change(Topic, :count)
|
||||
@ -1534,8 +1536,8 @@ RSpec.describe Email::Receiver do
|
||||
end
|
||||
|
||||
it "raises an InsufficientTrustLevelError when user's trust level isn't enough" do
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: 3)
|
||||
SiteSetting.email_in_min_trust = 4
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: 3, refresh_auto_groups: true)
|
||||
SiteSetting.email_in_allowed_groups = Group::AUTO_GROUPS[:trust_level_4]
|
||||
expect { process(:existing_user) }.to raise_error(
|
||||
Email::Receiver::InsufficientTrustLevelError,
|
||||
)
|
||||
@ -1584,7 +1586,12 @@ RSpec.describe Email::Receiver do
|
||||
it "creates visible topic for ham" do
|
||||
SiteSetting.email_in_spam_header = "none"
|
||||
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:existing_user) }.to change { Topic.count }.by(1) # Topic created
|
||||
|
||||
topic = Topic.last
|
||||
@ -1600,7 +1607,12 @@ RSpec.describe Email::Receiver do
|
||||
SiteSetting.email_in_spam_header = "X-Spam-Flag"
|
||||
|
||||
user =
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:spam_x_spam_flag) }.to change { ReviewableQueuedPost.count }.by(1)
|
||||
expect(user.reload.silenced?).to be(true)
|
||||
end
|
||||
@ -1609,7 +1621,12 @@ RSpec.describe Email::Receiver do
|
||||
SiteSetting.email_in_spam_header = "X-Spam-Status"
|
||||
|
||||
user =
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:spam_x_spam_status) }.to change { ReviewableQueuedPost.count }.by(1)
|
||||
expect(user.reload.silenced?).to be(true)
|
||||
end
|
||||
@ -1618,7 +1635,12 @@ RSpec.describe Email::Receiver do
|
||||
SiteSetting.email_in_spam_header = "X-SES-Spam-Verdict"
|
||||
|
||||
user =
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:spam_x_ses_spam_verdict) }.to change { ReviewableQueuedPost.count }.by(1)
|
||||
expect(user.reload.silenced?).to be(true)
|
||||
end
|
||||
@ -1627,7 +1649,12 @@ RSpec.describe Email::Receiver do
|
||||
SiteSetting.email_in_authserv_id = "example.com"
|
||||
|
||||
user =
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:dmarc_fail) }.to change { ReviewableQueuedPost.count }.by(1)
|
||||
expect(user.reload.silenced?).to be(false)
|
||||
end
|
||||
@ -1635,7 +1662,12 @@ RSpec.describe Email::Receiver do
|
||||
it "adds the 'elided' part of the original message when always_show_trimmed_content is enabled" do
|
||||
SiteSetting.always_show_trimmed_content = true
|
||||
|
||||
Fabricate(:user, email: "existing@bar.com", trust_level: SiteSetting.email_in_min_trust)
|
||||
Fabricate(
|
||||
:user,
|
||||
email: "existing@bar.com",
|
||||
trust_level: SiteSetting.email_in_min_trust,
|
||||
refresh_auto_groups: true,
|
||||
)
|
||||
expect { process(:forwarded_email_to_category) }.to change { Topic.count }.by(1) # Topic created
|
||||
|
||||
new_post, = Post.last
|
||||
@ -1698,13 +1730,13 @@ RSpec.describe Email::Receiver do
|
||||
end
|
||||
|
||||
it "lets an email in from a high-TL user" do
|
||||
Fabricate(:user, email: "tl4@bar.com", trust_level: TrustLevel[4])
|
||||
Fabricate(:user, email: "tl4@bar.com", trust_level: TrustLevel[4], refresh_auto_groups: true)
|
||||
expect { process(:tl4_user) }.to change(Topic, :count)
|
||||
end
|
||||
|
||||
it "fails on email from a low-TL user" do
|
||||
SiteSetting.email_in_min_trust = 4
|
||||
Fabricate(:user, email: "tl3@bar.com", trust_level: TrustLevel[3])
|
||||
SiteSetting.email_in_allowed_groups = Group::AUTO_GROUPS[:trust_level_4]
|
||||
Fabricate(:user, email: "tl3@bar.com", trust_level: TrustLevel[3], refresh_auto_groups: true)
|
||||
expect { process(:tl3_user) }.to raise_error(Email::Receiver::InsufficientTrustLevelError)
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user