FIX: Ignore suspect users that were migrated or users who were created more than six months ago (#9205)

This commit is contained in:
Roman Rizzi 2020-03-14 08:47:53 -03:00 committed by GitHub
parent e825f47daa
commit 27bc4f51c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 1 deletions

View File

@ -9,15 +9,19 @@ module Jobs
return if SiteSetting.must_approve_users return if SiteSetting.must_approve_users
users = User users = User
.distinct
.activated .activated
.human_users .human_users
.where(approved: false) .where(approved: false)
.joins(:user_profile, :user_stat) .joins(:user_profile, :user_stat)
.where("users.created_at <= ?", 1.day.ago) .where("users.created_at <= ? AND users.created_at >= ?", 1.day.ago, 6.months.ago)
.where("LENGTH(COALESCE(user_profiles.bio_raw, user_profiles.website, '')) > 0") .where("LENGTH(COALESCE(user_profiles.bio_raw, user_profiles.website, '')) > 0")
.where("user_stats.posts_read_count <= 1 AND user_stats.topics_entered <= 1") .where("user_stats.posts_read_count <= 1 AND user_stats.topics_entered <= 1")
.joins("LEFT OUTER JOIN reviewables r ON r.target_id = users.id AND r.target_type = 'User'") .joins("LEFT OUTER JOIN reviewables r ON r.target_id = users.id AND r.target_type = 'User'")
.where('r.id IS NULL') .where('r.id IS NULL')
.joins('LEFT OUTER JOIN user_custom_fields ucf ON users.id = ucf.user_id')
.group('users.id, ucf.id')
.having('ucf.id IS NULL OR NOT bool_or(ucf.name = ?)', 'import_id')
.limit(10) .limit(10)
users.each do |user| users.each do |user|

View File

@ -56,5 +56,29 @@ describe Jobs::EnqueueSuspectUsers do
expect(ReviewableUser.where(target: suspect_user).exists?).to eq(false) expect(ReviewableUser.where(target: suspect_user).exists?).to eq(false)
end end
it 'ignores users created more than six months ago' do
suspect_user.update!(created_at: 1.year.ago)
subject.execute({})
expect(ReviewableUser.where(target: suspect_user).exists?).to eq(false)
end
it 'ignores users that were imported from another site' do
suspect_user.upsert_custom_fields({ import_id: 'fake_id' })
subject.execute({})
expect(ReviewableUser.where(target: suspect_user).exists?).to eq(false)
end
it 'enqueues a suspect users with custom fields' do
suspect_user.upsert_custom_fields({ field_a: 'value', field_b: 'value' })
subject.execute({})
expect(ReviewableUser.where(target: suspect_user).exists?).to eq(true)
end
end end
end end