FEATURE: Remove more PII during user anonymizing

Removes
  * invite if the user was invited
  * email tokens
  * incoming emails
  * email log entries
  * raw emails from posts
This commit is contained in:
Gerhard Schlager
2018-06-07 12:17:37 +02:00
parent 22c186a792
commit cf038cf72a
2 changed files with 56 additions and 1 deletions

View File

@@ -23,7 +23,9 @@ describe UserAnonymizer do
end
describe "make_anonymous" do
let(:user) { Fabricate(:user, username: "edward") }
let(:original_email) { "edward@example.net" }
let(:user) { Fabricate(:user, username: "edward", email: original_email) }
let(:another_user) { Fabricate(:evil_trout) }
subject(:make_anonymous) { described_class.make_anonymous(user, admin) }
it "changes username" do
@@ -201,6 +203,49 @@ describe UserAnonymizer do
expect(user.api_key).to eq(nil)
end
it "removes invites" do
Fabricate(:invite, user: user)
Fabricate(:invite, user: another_user)
expect { make_anonymous }.to change { Invite.count }.by(-1)
expect(Invite.where(user_id: user.id).count).to eq(0)
end
it "removes email tokens" do
Fabricate(:email_token, user: user)
Fabricate(:email_token, user: another_user)
expect { make_anonymous }.to change { EmailToken.count }.by(-1)
expect(EmailToken.where(user_id: user.id).count).to eq(0)
end
it "removes email log entries" do
Fabricate(:email_log, user: user)
Fabricate(:email_log, user: another_user)
expect { make_anonymous }.to change { EmailLog.count }.by(-1)
expect(EmailLog.where(user_id: user.id).count).to eq(0)
end
it "removes incoming emails" do
Fabricate(:incoming_email, user: user, from_address: user.email)
Fabricate(:incoming_email, from_address: user.email, error: "Some error")
Fabricate(:incoming_email, user: another_user, from_address: another_user.email)
expect { make_anonymous }.to change { IncomingEmail.count }.by(-2)
expect(IncomingEmail.where(user_id: user.id).count).to eq(0)
expect(IncomingEmail.where(from_address: original_email).count).to eq(0)
end
it "removes raw email from posts" do
post1 = Fabricate(:post, user: user, via_email: true, raw_email: "raw email from user")
post2 = Fabricate(:post, user: another_user, via_email: true, raw_email: "raw email from another user")
make_anonymous
expect(post1.reload).to have_attributes(via_email: true, raw_email: nil)
expect(post2.reload).to have_attributes(via_email: true, raw_email: "raw email from another user")
end
end
describe "anonymize_ip" do