mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: user's default group should only be set once
Setting a user's default groups based on their email address should only be done once, ie. when they confirm their email address.
Previously we were doing this everytime we'd save a user record 🤷
This commit is contained in:
@@ -8,19 +8,21 @@ describe Jobs::AutomaticGroupMembership do
|
||||
end
|
||||
|
||||
it "updates the membership" do
|
||||
user1 = Fabricate(:user, email: "foo@wat.com")
|
||||
user2 = Fabricate(:user, email: "foo@bar.com")
|
||||
user3 = Fabricate(:user, email: "bar@wat.com", staged: true)
|
||||
user4 = Fabricate(:user, email: "abc@wat.com", active: false)
|
||||
user1 = Fabricate(:user, email: "no@bar.com")
|
||||
user2 = Fabricate(:user, email: "no@wat.com")
|
||||
user3 = Fabricate(:user, email: "noo@wat.com", staged: true)
|
||||
user4 = Fabricate(:user, email: "yes@wat.com")
|
||||
EmailToken.confirm(user4.email_tokens.last.token)
|
||||
|
||||
group = Fabricate(:group, automatic_membership_email_domains: "wat.com", automatic_membership_retroactive: true)
|
||||
|
||||
Jobs::AutomaticGroupMembership.new.execute(group_id: group.id)
|
||||
|
||||
group.reload
|
||||
expect(group.users.include?(user1)).to eq(true)
|
||||
expect(group.users.include?(user1)).to eq(false)
|
||||
expect(group.users.include?(user2)).to eq(false)
|
||||
expect(group.users.include?(user3)).to eq(false)
|
||||
expect(group.users.include?(user4)).to eq(false)
|
||||
expect(group.users.include?(user4)).to eq(true)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1220,29 +1220,16 @@ describe User do
|
||||
)
|
||||
}
|
||||
|
||||
it "doesn't automatically add inactive users" do
|
||||
inactive_user = Fabricate(:user, active: false, email: "wat@wat.com")
|
||||
group.reload
|
||||
expect(group.users.include?(inactive_user)).to eq(false)
|
||||
end
|
||||
|
||||
it "doesn't automatically add users with unconfirmed email" do
|
||||
unconfirmed_email_user = Fabricate(:user, active: true, email: "wat@wat.com")
|
||||
unconfirmed_email_user.email_tokens.create(email: unconfirmed_email_user.email)
|
||||
group.reload
|
||||
expect(group.users.include?(unconfirmed_email_user)).to eq(false)
|
||||
end
|
||||
|
||||
it "doesn't automatically add staged users" do
|
||||
staged_user = Fabricate(:user, active: true, staged: true, email: "wat@wat.com")
|
||||
EmailToken.confirm(staged_user.email_tokens.last.token)
|
||||
group.reload
|
||||
expect(group.users.include?(staged_user)).to eq(false)
|
||||
end
|
||||
|
||||
it "is automatically added to a group when the email matches" do
|
||||
user = Fabricate(:user, active: true, email: "foo@bar.com")
|
||||
email_token = user.email_tokens.create(email: user.email).token
|
||||
EmailToken.confirm(email_token)
|
||||
EmailToken.confirm(user.email_tokens.last.token)
|
||||
group.reload
|
||||
expect(group.users.include?(user)).to eq(true)
|
||||
|
||||
@@ -1263,8 +1250,7 @@ describe User do
|
||||
|
||||
user.password_required!
|
||||
user.save!
|
||||
email_token = user.email_tokens.create(email: user.email).token
|
||||
EmailToken.confirm(email_token)
|
||||
EmailToken.confirm(user.email_tokens.last.token)
|
||||
user.reload
|
||||
|
||||
expect(user.title).to eq("bars and wats")
|
||||
|
||||
Reference in New Issue
Block a user