akkoma/test/web/admin_api/views/report_view_test.exs

138 lines
3.9 KiB
Elixir
Raw Normal View History

2019-06-15 16:30:14 -06:00
# Pleroma: A lightweight social networking server
2020-03-03 15:44:49 -07:00
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
2019-06-15 16:30:14 -06:00
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.AdminAPI.ReportViewTest do
use Pleroma.DataCase
import Pleroma.Factory
2019-09-23 16:33:59 -06:00
alias Pleroma.Web.AdminAPI.Report
2019-06-15 16:30:14 -06:00
alias Pleroma.Web.AdminAPI.ReportView
2019-06-15 16:35:45 -06:00
alias Pleroma.Web.CommonAPI
2019-06-15 16:30:14 -06:00
alias Pleroma.Web.MastodonAPI.AccountView
alias Pleroma.Web.MastodonAPI.StatusView
test "renders a report" do
user = insert(:user)
other_user = insert(:user)
2020-04-28 06:50:37 -06:00
{:ok, activity} = CommonAPI.report(user, %{account_id: other_user.id})
2019-06-15 16:30:14 -06:00
expected = %{
content: nil,
actor:
Map.merge(
2019-09-30 06:10:54 -06:00
AccountView.render("show.json", %{user: user}),
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user})
),
account:
Map.merge(
2019-09-30 06:10:54 -06:00
AccountView.render("show.json", %{user: other_user}),
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: other_user})
),
2019-06-15 16:30:14 -06:00
statuses: [],
2019-12-03 07:54:07 -07:00
notes: [],
2019-06-15 16:30:14 -06:00
state: "open",
id: activity.id
}
result =
2019-09-23 16:33:59 -06:00
ReportView.render("show.json", Report.extract_report_info(activity))
2019-06-15 16:30:14 -06:00
|> Map.delete(:created_at)
assert result == expected
end
test "includes reported statuses" do
user = insert(:user)
other_user = insert(:user)
2020-05-12 13:59:26 -06:00
{:ok, activity} = CommonAPI.post(other_user, %{status: "toot"})
2019-06-15 16:30:14 -06:00
{:ok, report_activity} =
2020-04-28 06:50:37 -06:00
CommonAPI.report(user, %{account_id: other_user.id, status_ids: [activity.id]})
2019-06-15 16:30:14 -06:00
other_user = Pleroma.User.get_by_id(other_user.id)
2019-06-15 16:30:14 -06:00
expected = %{
content: nil,
actor:
Map.merge(
2019-09-30 06:10:54 -06:00
AccountView.render("show.json", %{user: user}),
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user})
),
account:
Map.merge(
2019-09-30 06:10:54 -06:00
AccountView.render("show.json", %{user: other_user}),
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: other_user})
),
statuses: [StatusView.render("show.json", %{activity: activity})],
2019-06-15 16:30:14 -06:00
state: "open",
2019-12-03 07:54:07 -07:00
notes: [],
2019-06-15 16:30:14 -06:00
id: report_activity.id
}
result =
2019-09-23 16:33:59 -06:00
ReportView.render("show.json", Report.extract_report_info(report_activity))
2019-06-15 16:30:14 -06:00
|> Map.delete(:created_at)
assert result == expected
end
test "renders report's state" do
user = insert(:user)
other_user = insert(:user)
2020-04-28 06:50:37 -06:00
{:ok, activity} = CommonAPI.report(user, %{account_id: other_user.id})
2019-06-15 16:30:14 -06:00
{:ok, activity} = CommonAPI.update_report_state(activity.id, "closed")
2019-09-23 16:33:59 -06:00
assert %{state: "closed"} =
ReportView.render("show.json", Report.extract_report_info(activity))
2019-06-15 16:30:14 -06:00
end
test "renders report description" do
user = insert(:user)
other_user = insert(:user)
{:ok, activity} =
CommonAPI.report(user, %{
2020-04-28 06:50:37 -06:00
account_id: other_user.id,
comment: "posts are too good for this instance"
2019-06-15 16:30:14 -06:00
})
assert %{content: "posts are too good for this instance"} =
2019-09-23 16:33:59 -06:00
ReportView.render("show.json", Report.extract_report_info(activity))
2019-06-15 16:30:14 -06:00
end
test "sanitizes report description" do
user = insert(:user)
other_user = insert(:user)
{:ok, activity} =
CommonAPI.report(user, %{
2020-04-28 06:50:37 -06:00
account_id: other_user.id,
comment: ""
2019-06-15 16:30:14 -06:00
})
data = Map.put(activity.data, "content", "<script> alert('hecked :D:D:D:D:D:D:D') </script>")
activity = Map.put(activity, :data, data)
refute "<script> alert('hecked :D:D:D:D:D:D:D') </script>" ==
2019-09-23 16:33:59 -06:00
ReportView.render("show.json", Report.extract_report_info(activity))[:content]
2019-06-15 16:30:14 -06:00
end
test "doesn't error out when the user doesn't exists" do
user = insert(:user)
other_user = insert(:user)
{:ok, activity} =
CommonAPI.report(user, %{
2020-04-28 06:50:37 -06:00
account_id: other_user.id,
comment: ""
})
Pleroma.User.delete(other_user)
Pleroma.User.invalidate_cache(other_user)
2019-09-23 16:33:59 -06:00
assert %{} = ReportView.render("show.json", Report.extract_report_info(activity))
end
2019-06-15 16:30:14 -06:00
end