Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/jobs
# Conflicts: # lib/pleroma/web/federator/federator.ex # lib/pleroma/web/websub/websub.ex
This commit is contained in:
commit
305d219413
481 changed files with 1398 additions and 742 deletions
|
|
@ -441,8 +441,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do
|
|||
assert result["first"]["orderedItems"] == [user_two.ap_id]
|
||||
end
|
||||
|
||||
test "it returns returns empty if the user has 'hide_followings' set", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_followings: true}})
|
||||
test "it returns returns empty if the user has 'hide_follows' set", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_follows: true}})
|
||||
user_two = insert(:user)
|
||||
User.follow(user, user_two)
|
||||
|
||||
|
|
|
|||
111
test/web/activity_pub/mrf/keyword_policy_test.exs
Normal file
111
test/web/activity_pub/mrf/keyword_policy_test.exs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
# Pleroma: A lightweight social networking server
|
||||
# Copyright © 2019 Pleroma Authors <https://pleroma.social/>
|
||||
# SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicyTest do
|
||||
use Pleroma.DataCase
|
||||
|
||||
alias Pleroma.Web.ActivityPub.MRF.KeywordPolicy
|
||||
|
||||
setup do
|
||||
Pleroma.Config.put([:mrf_keyword], %{reject: [], federated_timeline_removal: [], replace: []})
|
||||
end
|
||||
|
||||
describe "rejecting based on keywords" do
|
||||
test "rejects if string matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :reject], ["pun"])
|
||||
|
||||
message = %{
|
||||
"type" => "Create",
|
||||
"object" => %{"content" => "just a daily reminder that compLAINer is a good pun"}
|
||||
}
|
||||
|
||||
assert {:reject, nil} == KeywordPolicy.filter(message)
|
||||
end
|
||||
|
||||
test "rejects if regex matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :reject], [~r/comp[lL][aA][iI][nN]er/])
|
||||
|
||||
assert true ==
|
||||
Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content ->
|
||||
message = %{
|
||||
"type" => "Create",
|
||||
"object" => %{
|
||||
"content" => "just a daily reminder that #{content} is a good pun"
|
||||
}
|
||||
}
|
||||
|
||||
{:reject, nil} == KeywordPolicy.filter(message)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
describe "delisting from ftl based on keywords" do
|
||||
test "delists if string matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], ["pun"])
|
||||
|
||||
message = %{
|
||||
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||
"type" => "Create",
|
||||
"object" => %{"content" => "just a daily reminder that compLAINer is a good pun"}
|
||||
}
|
||||
|
||||
{:ok, result} = KeywordPolicy.filter(message)
|
||||
assert ["https://www.w3.org/ns/activitystreams#Public"] == result["cc"]
|
||||
refute ["https://www.w3.org/ns/activitystreams#Public"] == result["to"]
|
||||
end
|
||||
|
||||
test "delists if regex matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :federated_timeline_removal], [~r/comp[lL][aA][iI][nN]er/])
|
||||
|
||||
assert true ==
|
||||
Enum.all?(["complainer", "compLainer", "compLAiNer", "compLAINer"], fn content ->
|
||||
message = %{
|
||||
"type" => "Create",
|
||||
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||
"object" => %{
|
||||
"content" => "just a daily reminder that #{content} is a good pun"
|
||||
}
|
||||
}
|
||||
|
||||
{:ok, result} = KeywordPolicy.filter(message)
|
||||
|
||||
["https://www.w3.org/ns/activitystreams#Public"] == result["cc"] and
|
||||
not (["https://www.w3.org/ns/activitystreams#Public"] == result["to"])
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
describe "replacing keywords" do
|
||||
test "replaces keyword if string matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :replace], [{"opensource", "free software"}])
|
||||
|
||||
message = %{
|
||||
"type" => "Create",
|
||||
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||
"object" => %{"content" => "ZFS is opensource"}
|
||||
}
|
||||
|
||||
{:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)
|
||||
assert result == "ZFS is free software"
|
||||
end
|
||||
|
||||
test "replaces keyword if regex matches" do
|
||||
Pleroma.Config.put([:mrf_keyword, :replace], [
|
||||
{~r/open(-|\s)?source\s?(software)?/, "free software"}
|
||||
])
|
||||
|
||||
assert true ==
|
||||
Enum.all?(["opensource", "open-source", "open source"], fn content ->
|
||||
message = %{
|
||||
"type" => "Create",
|
||||
"to" => ["https://www.w3.org/ns/activitystreams#Public"],
|
||||
"object" => %{"content" => "ZFS is #{content}"}
|
||||
}
|
||||
|
||||
{:ok, %{"object" => %{"content" => result}}} = KeywordPolicy.filter(message)
|
||||
result == "ZFS is free software"
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1139,8 +1139,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
|||
assert id == to_string(other_user.id)
|
||||
end
|
||||
|
||||
test "getting following, hide_followings", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_followings: true}})
|
||||
test "getting following, hide_follows", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_follows: true}})
|
||||
other_user = insert(:user)
|
||||
{:ok, user} = User.follow(user, other_user)
|
||||
|
||||
|
|
@ -1151,8 +1151,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
|||
assert [] == json_response(conn, 200)
|
||||
end
|
||||
|
||||
test "getting following, hide_followings, same user requesting", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_followings: true}})
|
||||
test "getting following, hide_follows, same user requesting", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_follows: true}})
|
||||
other_user = insert(:user)
|
||||
{:ok, user} = User.follow(user, other_user)
|
||||
|
||||
|
|
|
|||
|
|
@ -235,4 +235,59 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do
|
|||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe "rich media cards" do
|
||||
test "a rich media card without a site name renders correctly" do
|
||||
page_url = "http://example.com"
|
||||
|
||||
card = %{
|
||||
url: page_url,
|
||||
image: page_url <> "/example.jpg",
|
||||
title: "Example website"
|
||||
}
|
||||
|
||||
%{provider_name: "example.com"} =
|
||||
StatusView.render("card.json", %{page_url: page_url, rich_media: card})
|
||||
end
|
||||
|
||||
test "a rich media card without a site name or image renders correctly" do
|
||||
page_url = "http://example.com"
|
||||
|
||||
card = %{
|
||||
url: page_url,
|
||||
title: "Example website"
|
||||
}
|
||||
|
||||
%{provider_name: "example.com"} =
|
||||
StatusView.render("card.json", %{page_url: page_url, rich_media: card})
|
||||
end
|
||||
|
||||
test "a rich media card without an image renders correctly" do
|
||||
page_url = "http://example.com"
|
||||
|
||||
card = %{
|
||||
url: page_url,
|
||||
site_name: "Example site name",
|
||||
title: "Example website"
|
||||
}
|
||||
|
||||
%{provider_name: "Example site name"} =
|
||||
StatusView.render("card.json", %{page_url: page_url, rich_media: card})
|
||||
end
|
||||
|
||||
test "a rich media card with all relevant data renders correctly" do
|
||||
page_url = "http://example.com"
|
||||
|
||||
card = %{
|
||||
url: page_url,
|
||||
site_name: "Example site name",
|
||||
title: "Example website",
|
||||
image: page_url <> "/example.jpg",
|
||||
description: "Example description"
|
||||
}
|
||||
|
||||
%{provider_name: "Example site name"} =
|
||||
StatusView.render("card.json", %{page_url: page_url, rich_media: card})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -62,7 +62,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
|> post("/api/account/verify_credentials.json")
|
||||
|> json_response(200)
|
||||
|
||||
assert response == UserView.render("show.json", %{user: user, token: response["token"]})
|
||||
assert response ==
|
||||
UserView.render("show.json", %{user: user, token: response["token"], for: user})
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -107,7 +108,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
|> post(request_path, %{status: "Nice meme.", visibility: "private"})
|
||||
|
||||
assert json_response(conn, 200) ==
|
||||
ActivityRepresenter.to_map(Repo.one(Activity), %{user: user})
|
||||
ActivityRepresenter.to_map(Repo.one(Activity), %{user: user, for: user})
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -418,6 +419,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
assert Enum.at(response, 0) ==
|
||||
ActivityRepresenter.to_map(activity, %{
|
||||
user: current_user,
|
||||
for: current_user,
|
||||
mentioned: [current_user]
|
||||
})
|
||||
end
|
||||
|
|
@ -547,7 +549,9 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
response = json_response(conn, 200)
|
||||
|
||||
assert length(response) == 1
|
||||
assert Enum.at(response, 0) == ActivityRepresenter.to_map(activity, %{user: current_user})
|
||||
|
||||
assert Enum.at(response, 0) ==
|
||||
ActivityRepresenter.to_map(activity, %{user: current_user, for: current_user})
|
||||
end
|
||||
|
||||
test "with credentials with user_id", %{conn: conn, user: current_user} do
|
||||
|
|
@ -1257,8 +1261,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
)
|
||||
end
|
||||
|
||||
test "it returns empty when hide_followings is set to true", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_followings: true}})
|
||||
test "it returns empty when hide_follows is set to true", %{conn: conn} do
|
||||
user = insert(:user, %{info: %{hide_follows: true}})
|
||||
followed_one = insert(:user)
|
||||
followed_two = insert(:user)
|
||||
not_followed = insert(:user)
|
||||
|
|
@ -1274,11 +1278,11 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
assert [] == json_response(conn, 200)
|
||||
end
|
||||
|
||||
test "it returns friends when hide_followings is set to true if the user themselves request it",
|
||||
test "it returns friends when hide_follows is set to true if the user themselves request it",
|
||||
%{
|
||||
conn: conn
|
||||
} do
|
||||
user = insert(:user, %{info: %{hide_followings: true}})
|
||||
user = insert(:user, %{info: %{hide_follows: true}})
|
||||
followed_one = insert(:user)
|
||||
followed_two = insert(:user)
|
||||
_not_followed = insert(:user)
|
||||
|
|
@ -1366,27 +1370,27 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})
|
||||
end
|
||||
|
||||
test "it sets and un-sets hide_followings", %{conn: conn} do
|
||||
test "it sets and un-sets hide_follows", %{conn: conn} do
|
||||
user = insert(:user)
|
||||
|
||||
conn
|
||||
|> assign(:user, user)
|
||||
|> post("/api/account/update_profile.json", %{
|
||||
"hide_followings" => "true"
|
||||
"hide_follows" => "true"
|
||||
})
|
||||
|
||||
user = Repo.get!(User, user.id)
|
||||
assert user.info.hide_followings == true
|
||||
assert user.info.hide_follows == true
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> assign(:user, user)
|
||||
|> post("/api/account/update_profile.json", %{
|
||||
"hide_followings" => "false"
|
||||
"hide_follows" => "false"
|
||||
})
|
||||
|
||||
user = Repo.get!(User, user.id)
|
||||
assert user.info.hide_followings == false
|
||||
assert user.info.hide_follows == false
|
||||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})
|
||||
end
|
||||
|
||||
|
|
@ -1414,6 +1418,30 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})
|
||||
end
|
||||
|
||||
test "it sets and un-sets show_role", %{conn: conn} do
|
||||
user = insert(:user)
|
||||
|
||||
conn
|
||||
|> assign(:user, user)
|
||||
|> post("/api/account/update_profile.json", %{
|
||||
"show_role" => "true"
|
||||
})
|
||||
|
||||
user = Repo.get!(User, user.id)
|
||||
assert user.info.show_role == true
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> assign(:user, user)
|
||||
|> post("/api/account/update_profile.json", %{
|
||||
"show_role" => "false"
|
||||
})
|
||||
|
||||
user = Repo.get!(User, user.id)
|
||||
assert user.info.show_role == false
|
||||
assert json_response(conn, 200) == UserView.render("user.json", %{user: user, for: user})
|
||||
end
|
||||
|
||||
test "it locks an account", %{conn: conn} do
|
||||
user = insert(:user)
|
||||
|
||||
|
|
@ -1814,7 +1842,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
|
||||
user = refresh_record(user)
|
||||
|
||||
assert json_response(response, 200) == ActivityRepresenter.to_map(activity, %{user: user})
|
||||
assert json_response(response, 200) ==
|
||||
ActivityRepresenter.to_map(activity, %{user: user, for: user})
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -1843,7 +1872,8 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
|
|||
|
||||
user = refresh_record(user)
|
||||
|
||||
assert json_response(response, 200) == ActivityRepresenter.to_map(activity, %{user: user})
|
||||
assert json_response(response, 200) ==
|
||||
ActivityRepresenter.to_map(activity, %{user: user, for: user})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
"locked" => false,
|
||||
"default_scope" => "public",
|
||||
"no_rich_text" => false,
|
||||
"hide_followings" => false,
|
||||
"hide_follows" => false,
|
||||
"hide_followers" => false,
|
||||
"fields" => [],
|
||||
"pleroma" => %{
|
||||
|
|
@ -148,7 +148,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
"locked" => false,
|
||||
"default_scope" => "public",
|
||||
"no_rich_text" => false,
|
||||
"hide_followings" => false,
|
||||
"hide_follows" => false,
|
||||
"hide_followers" => false,
|
||||
"fields" => [],
|
||||
"pleroma" => %{
|
||||
|
|
@ -197,7 +197,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
"locked" => false,
|
||||
"default_scope" => "public",
|
||||
"no_rich_text" => false,
|
||||
"hide_followings" => false,
|
||||
"hide_follows" => false,
|
||||
"hide_followers" => false,
|
||||
"fields" => [],
|
||||
"pleroma" => %{
|
||||
|
|
@ -214,6 +214,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
represented = UserView.render("show.json", %{user: user, for: user})
|
||||
|
||||
assert represented["rights"]["delete_others_notice"]
|
||||
assert represented["role"] == "moderator"
|
||||
end
|
||||
|
||||
test "a user that is a admin" do
|
||||
|
|
@ -221,6 +222,21 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
represented = UserView.render("show.json", %{user: user, for: user})
|
||||
|
||||
assert represented["rights"]["admin"]
|
||||
assert represented["role"] == "admin"
|
||||
end
|
||||
|
||||
test "A moderator with hidden role for another user", %{user: user} do
|
||||
admin = insert(:user, %{info: %{is_moderator: true, show_role: false}})
|
||||
represented = UserView.render("show.json", %{user: admin, for: user})
|
||||
|
||||
assert represented["role"] == nil
|
||||
end
|
||||
|
||||
test "An admin with hidden role for another user", %{user: user} do
|
||||
admin = insert(:user, %{info: %{is_admin: true, show_role: false}})
|
||||
represented = UserView.render("show.json", %{user: admin, for: user})
|
||||
|
||||
assert represented["role"] == nil
|
||||
end
|
||||
|
||||
test "A blocked user for the blocker" do
|
||||
|
|
@ -260,7 +276,7 @@ defmodule Pleroma.Web.TwitterAPI.UserViewTest do
|
|||
"locked" => false,
|
||||
"default_scope" => "public",
|
||||
"no_rich_text" => false,
|
||||
"hide_followings" => false,
|
||||
"hide_follows" => false,
|
||||
"hide_followers" => false,
|
||||
"fields" => [],
|
||||
"pleroma" => %{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue