mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Support anonymizing a user's IP addresses
This commit is contained in:
@@ -2,10 +2,10 @@ require "rails_helper"
|
||||
|
||||
describe UserAnonymizer do
|
||||
|
||||
describe "make_anonymous" do
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
let(:user) { Fabricate(:user, username: "edward") }
|
||||
let(:admin) { Fabricate(:admin) }
|
||||
|
||||
describe "make_anonymous" do
|
||||
let(:user) { Fabricate(:user, username: "edward") }
|
||||
subject(:make_anonymous) { described_class.make_anonymous(user, admin) }
|
||||
|
||||
it "changes username" do
|
||||
@@ -157,4 +157,75 @@ describe UserAnonymizer do
|
||||
|
||||
end
|
||||
|
||||
describe "anonymize_ip" do
|
||||
let(:old_ip) { "1.2.3.4" }
|
||||
let(:anon_ip) { "0.0.0.0" }
|
||||
let(:user) { Fabricate(:user, ip_address: old_ip, registration_ip_address: old_ip) }
|
||||
let(:post) { Fabricate(:post) }
|
||||
let(:topic) { post.topic }
|
||||
|
||||
it "doesn't anonymize ips by default" do
|
||||
UserAnonymizer.make_anonymous(user, admin)
|
||||
expect(user.ip_address).to eq(old_ip)
|
||||
end
|
||||
|
||||
it "is called if you pass an option" do
|
||||
UserAnonymizer.make_anonymous(user, admin, anonymize_ip: anon_ip)
|
||||
user.reload
|
||||
expect(user.ip_address).to eq(anon_ip)
|
||||
end
|
||||
|
||||
it "exhaustively replaces all user ips" do
|
||||
link = IncomingLink.create!(current_user_id: user.id, ip_address: old_ip, post_id: post.id)
|
||||
|
||||
screened_email = ScreenedEmail.create!(email: user.email, ip_address: old_ip)
|
||||
|
||||
search_log = SearchLog.create!(
|
||||
term: 'wat',
|
||||
search_type: SearchLog.search_types[:header],
|
||||
user_id: user.id,
|
||||
ip_address: old_ip
|
||||
)
|
||||
|
||||
topic_link = TopicLink.create!(
|
||||
user_id: admin.id,
|
||||
topic_id: topic.id,
|
||||
url: 'https://discourse.org',
|
||||
domain: 'discourse.org'
|
||||
)
|
||||
|
||||
topic_link_click = TopicLinkClick.create!(
|
||||
topic_link_id: topic_link.id,
|
||||
user_id: user.id,
|
||||
ip_address: old_ip
|
||||
)
|
||||
|
||||
user_profile_view = UserProfileView.create!(
|
||||
user_id: user.id,
|
||||
user_profile_id: admin.user_profile.id,
|
||||
ip_address: old_ip,
|
||||
viewed_at: Time.now
|
||||
)
|
||||
|
||||
TopicViewItem.create!(topic_id: topic.id, user_id: user.id, ip_address: old_ip, viewed_at: Time.now)
|
||||
delete_history = StaffActionLogger.new(admin).log_user_deletion(user)
|
||||
user_history = StaffActionLogger.new(user).log_backup_create
|
||||
|
||||
UserAnonymizer.make_anonymous(user, admin, anonymize_ip: anon_ip)
|
||||
expect(user.registration_ip_address).to eq(anon_ip)
|
||||
expect(link.reload.ip_address).to eq(anon_ip)
|
||||
expect(screened_email.reload.ip_address).to eq(anon_ip)
|
||||
expect(search_log.reload.ip_address).to eq(anon_ip)
|
||||
expect(topic_link_click.reload.ip_address).to eq(anon_ip)
|
||||
topic_view = TopicViewItem.where(topic_id: topic.id, user_id: user.id).first
|
||||
expect(topic_view.ip_address).to eq(anon_ip)
|
||||
expect(delete_history.reload.ip_address).to eq(anon_ip)
|
||||
expect(user_history.reload.ip_address).to eq(anon_ip)
|
||||
expect(user_profile_view.reload.ip_address).to eq(anon_ip)
|
||||
|
||||
expect("failed").to eq("success")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user