FIX: Don't show that an existing user is invited_by another user (#27665)

If an existing user (John) accepts an invite created by Kenny to a group, John may be seen as invited by Kenny, despite already having an account on the site.

This fix removes the bug by excluding invites that determine the invited_by after the user's creation date. The delay buffer in the query accounts for invites that also create the user at the same time.
This commit is contained in:
Natalie Tay
2024-07-04 10:27:37 +08:00
committed by GitHub
parent eadda77edf
commit 55bf0e21fb
5 changed files with 92 additions and 2 deletions

View File

@ -3235,11 +3235,26 @@ RSpec.describe User do
describe "#invited_by" do
it "returns even if invites was trashed" do
invite = Fabricate(:invite, invited_by: Fabricate(:user))
Fabricate(:invited_user, invite: invite, user: user)
Fabricate(:invited_user, invite: invite, user: user, redeemed_at: Time.now)
invite.trash!
expect(user.invited_by).to eq(invite.invited_by)
end
it "does not return invites that are not redeemed yet" do
invite = Fabricate(:invite, invited_by: Fabricate(:user))
Fabricate(:invited_user, invite: invite, user: user, redeemed_at: nil)
invite.trash!
expect(user.invited_by).to eq(nil)
end
it "excludes invites redeemed after user creation" do
invite = Fabricate(:invite, invited_by: Fabricate(:user))
Fabricate(:invited_user, invite: invite, user: user, redeemed_at: user.created_at + 6.second)
expect(user.invited_by).to eq(nil)
end
end
describe "#username_equals_to?" do