Merge branch 'issue/2256' into 'develop'

[#2256] added subject actor to moderation log

See merge request pleroma/pleroma!3164
This commit is contained in:
feld 2020-12-04 17:49:05 +00:00
commit 6adad96c79
7 changed files with 328 additions and 280 deletions

View file

@ -197,6 +197,13 @@ defmodule Pleroma.ActivityTest do
assert [%{id: ^id1, object: %Object{}}, %{id: ^id2, object: %Object{}}] = activities
end
test "get_by_id_with_user_actor/1" do
user = insert(:user)
activity = insert(:note_activity, note: insert(:note, user: user))
assert Activity.get_by_id_with_user_actor(activity.id).user_actor == user
end
test "get_by_id_with_object/1" do
%{id: id} = insert(:note_activity)

View file

@ -182,11 +182,14 @@ defmodule Pleroma.ModerationLogTest do
end
test "logging report update", %{moderator: moderator} do
user = insert(:user)
report = %Activity{
id: "9m9I1F4p8ftrTP6QTI",
data: %{
"type" => "Flag",
"state" => "resolved"
"state" => "resolved",
"actor" => user.ap_id
}
}
@ -194,35 +197,48 @@ defmodule Pleroma.ModerationLogTest do
ModerationLog.insert_log(%{
actor: moderator,
action: "report_update",
subject: report
subject: report,
subject_actor: user
})
log = Repo.one(ModerationLog)
assert log.data["message"] ==
"@#{moderator.nickname} updated report ##{report.id} with 'resolved' state"
"@#{moderator.nickname} updated report ##{report.id} (on user @#{user.nickname}) with 'resolved' state"
end
test "logging report response", %{moderator: moderator} do
user = insert(:user)
report = %Activity{
id: "9m9I1F4p8ftrTP6QTI",
data: %{
"type" => "Note"
"type" => "Note",
"actor" => user.ap_id
}
}
{:ok, _} =
ModerationLog.insert_log(%{
actor: moderator,
action: "report_note",
subject: report,
text: "look at this"
})
attrs = %{
actor: moderator,
action: "report_note",
subject: report,
text: "look at this"
}
log = Repo.one(ModerationLog)
{:ok, log1} = ModerationLog.insert_log(attrs)
log = Repo.get(ModerationLog, log1.id)
assert log.data["message"] ==
"@#{moderator.nickname} added note 'look at this' to report ##{report.id}"
{:ok, log2} = ModerationLog.insert_log(Map.merge(attrs, %{subject_actor: user}))
log = Repo.get(ModerationLog, log2.id)
assert log.data["message"] ==
"@#{moderator.nickname} added note 'look at this' to report ##{report.id} on user @#{
user.nickname
}"
end
test "logging status sensitivity update", %{moderator: moderator} do

View file

@ -122,13 +122,13 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do
})
|> json_response_and_validate_schema(:no_content)
activity = Activity.get_by_id(id)
activity = Activity.get_by_id_with_user_actor(id)
assert activity.data["state"] == "resolved"
log_entry = Repo.one(ModerationLog)
assert ModerationLog.get_log_entry_message(log_entry) ==
"@#{admin.nickname} updated report ##{id} with 'resolved' state"
"@#{admin.nickname} updated report ##{id} (on user @#{activity.user_actor.nickname}) with 'resolved' state"
end
test "closes report", %{conn: conn, id: id, admin: admin} do
@ -141,13 +141,13 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do
})
|> json_response_and_validate_schema(:no_content)
activity = Activity.get_by_id(id)
activity = Activity.get_by_id_with_user_actor(id)
assert activity.data["state"] == "closed"
log_entry = Repo.one(ModerationLog)
assert ModerationLog.get_log_entry_message(log_entry) ==
"@#{admin.nickname} updated report ##{id} with 'closed' state"
"@#{admin.nickname} updated report ##{id} (on user @#{activity.user_actor.nickname}) with 'closed' state"
end
test "returns 400 when state is unknown", %{conn: conn, id: id} do
@ -193,18 +193,20 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do
})
|> json_response_and_validate_schema(:no_content)
activity = Activity.get_by_id(id)
second_activity = Activity.get_by_id(second_report_id)
activity = Activity.get_by_id_with_user_actor(id)
second_activity = Activity.get_by_id_with_user_actor(second_report_id)
assert activity.data["state"] == "resolved"
assert second_activity.data["state"] == "closed"
[first_log_entry, second_log_entry] = Repo.all(ModerationLog)
assert ModerationLog.get_log_entry_message(first_log_entry) ==
"@#{admin.nickname} updated report ##{id} with 'resolved' state"
"@#{admin.nickname} updated report ##{id} (on user @#{activity.user_actor.nickname}) with 'resolved' state"
assert ModerationLog.get_log_entry_message(second_log_entry) ==
"@#{admin.nickname} updated report ##{second_report_id} with 'closed' state"
"@#{admin.nickname} updated report ##{second_report_id} (on user @#{
second_activity.user_actor.nickname
}) with 'closed' state"
end
end

View file

@ -0,0 +1,98 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.AdminAPI.ModerationLogViewTest do
use Pleroma.DataCase
alias Pleroma.Web.AdminAPI.ModerationLogView
describe "renders `report_note_delete` log messages" do
setup do
log1 = %Pleroma.ModerationLog{
data: %{
"action" => "report_note_delete",
"actor" => %{"id" => "A1I7G8", "nickname" => "admin", "type" => "user"},
"message" => "@admin deleted note 'mistake' from report #A1I7be on user @b-612",
"subject" => %{"id" => "A1I7be", "state" => "open", "type" => "report"},
"subject_actor" => %{"id" => "A1I7G8", "nickname" => "b-612", "type" => "user"},
"text" => "mistake"
},
inserted_at: ~N[2020-11-17 14:13:20]
}
log2 = %Pleroma.ModerationLog{
data: %{
"action" => "report_note_delete",
"actor" => %{"id" => "A1I7G8", "nickname" => "admin", "type" => "user"},
"message" => "@admin deleted note 'fake user' from report #A1I7be on user @j-612",
"subject" => %{"id" => "A1I7be", "state" => "open", "type" => "report"},
"subject_actor" => %{"id" => "A1I7G8", "nickname" => "j-612", "type" => "user"},
"text" => "fake user"
},
inserted_at: ~N[2020-11-17 14:13:20]
}
{:ok, %{log1: log1, log2: log2}}
end
test "renders `report_note_delete` log messages", %{log1: log1, log2: log2} do
assert ModerationLogView.render(
"index.json",
%{log: %{items: [log1, log2], count: 2}}
) == %{
items: [
%{
data: %{
"action" => "report_note_delete",
"actor" => %{"id" => "A1I7G8", "nickname" => "admin", "type" => "user"},
"message" =>
"@admin deleted note 'mistake' from report #A1I7be on user @b-612",
"subject" => %{"id" => "A1I7be", "state" => "open", "type" => "report"},
"subject_actor" => %{
"id" => "A1I7G8",
"nickname" => "b-612",
"type" => "user"
},
"text" => "mistake"
},
message: "@admin deleted note 'mistake' from report #A1I7be on user @b-612",
time: 1_605_622_400
},
%{
data: %{
"action" => "report_note_delete",
"actor" => %{"id" => "A1I7G8", "nickname" => "admin", "type" => "user"},
"message" =>
"@admin deleted note 'fake user' from report #A1I7be on user @j-612",
"subject" => %{"id" => "A1I7be", "state" => "open", "type" => "report"},
"subject_actor" => %{
"id" => "A1I7G8",
"nickname" => "j-612",
"type" => "user"
},
"text" => "fake user"
},
message: "@admin deleted note 'fake user' from report #A1I7be on user @j-612",
time: 1_605_622_400
}
],
total: 2
}
end
test "renders `report_note_delete` log message", %{log1: log} do
assert ModerationLogView.render("show.json", %{log_entry: log}) == %{
data: %{
"action" => "report_note_delete",
"actor" => %{"id" => "A1I7G8", "nickname" => "admin", "type" => "user"},
"message" => "@admin deleted note 'mistake' from report #A1I7be on user @b-612",
"subject" => %{"id" => "A1I7be", "state" => "open", "type" => "report"},
"subject_actor" => %{"id" => "A1I7G8", "nickname" => "b-612", "type" => "user"},
"text" => "mistake"
},
message: "@admin deleted note 'mistake' from report #A1I7be on user @b-612",
time: 1_605_622_400
}
end
end
end