Extract domain blocks actions from MastodonAPIController
to DomainBlockController
This commit is contained in:
parent
a83c116df7
commit
408750b94e
5 changed files with 80 additions and 57 deletions
|
@ -0,0 +1,26 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.MastodonAPI.DomainBlockController do
|
||||||
|
use Pleroma.Web, :controller
|
||||||
|
|
||||||
|
alias Pleroma.User
|
||||||
|
|
||||||
|
@doc "GET /api/v1/domain_blocks"
|
||||||
|
def index(%{assigns: %{user: %{info: info}}} = conn, _) do
|
||||||
|
json(conn, Map.get(info, :domain_blocks, []))
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc "POST /api/v1/domain_blocks"
|
||||||
|
def create(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do
|
||||||
|
User.block_domain(blocker, domain)
|
||||||
|
json(conn, %{})
|
||||||
|
end
|
||||||
|
|
||||||
|
@doc "DELETE /api/v1/domain_blocks"
|
||||||
|
def delete(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do
|
||||||
|
User.unblock_domain(blocker, domain)
|
||||||
|
json(conn, %{})
|
||||||
|
end
|
||||||
|
end
|
|
@ -715,20 +715,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def domain_blocks(%{assigns: %{user: %{info: info}}} = conn, _) do
|
|
||||||
json(conn, info.domain_blocks || [])
|
|
||||||
end
|
|
||||||
|
|
||||||
def block_domain(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do
|
|
||||||
User.block_domain(blocker, domain)
|
|
||||||
json(conn, %{})
|
|
||||||
end
|
|
||||||
|
|
||||||
def unblock_domain(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do
|
|
||||||
User.unblock_domain(blocker, domain)
|
|
||||||
json(conn, %{})
|
|
||||||
end
|
|
||||||
|
|
||||||
def subscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
def subscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
||||||
with %User{} = subscription_target <- User.get_cached_by_id(id),
|
with %User{} = subscription_target <- User.get_cached_by_id(id),
|
||||||
{:ok, subscription_target} = User.subscribe(user, subscription_target) do
|
{:ok, subscription_target} = User.subscribe(user, subscription_target) do
|
||||||
|
|
|
@ -346,7 +346,7 @@ defmodule Pleroma.Web.Router do
|
||||||
get("/lists/:id", ListController, :show)
|
get("/lists/:id", ListController, :show)
|
||||||
get("/lists/:id/accounts", ListController, :list_accounts)
|
get("/lists/:id/accounts", ListController, :list_accounts)
|
||||||
|
|
||||||
get("/domain_blocks", MastodonAPIController, :domain_blocks)
|
get("/domain_blocks", DomainBlockController, :index)
|
||||||
|
|
||||||
get("/filters", MastodonAPIController, :get_filters)
|
get("/filters", MastodonAPIController, :get_filters)
|
||||||
|
|
||||||
|
@ -422,8 +422,8 @@ defmodule Pleroma.Web.Router do
|
||||||
post("/follow_requests/:id/authorize", MastodonAPIController, :authorize_follow_request)
|
post("/follow_requests/:id/authorize", MastodonAPIController, :authorize_follow_request)
|
||||||
post("/follow_requests/:id/reject", MastodonAPIController, :reject_follow_request)
|
post("/follow_requests/:id/reject", MastodonAPIController, :reject_follow_request)
|
||||||
|
|
||||||
post("/domain_blocks", MastodonAPIController, :block_domain)
|
post("/domain_blocks", DomainBlockController, :create)
|
||||||
delete("/domain_blocks", MastodonAPIController, :unblock_domain)
|
delete("/domain_blocks", DomainBlockController, :delete)
|
||||||
|
|
||||||
post("/pleroma/accounts/:id/subscribe", MastodonAPIController, :subscribe)
|
post("/pleroma/accounts/:id/subscribe", MastodonAPIController, :subscribe)
|
||||||
post("/pleroma/accounts/:id/unsubscribe", MastodonAPIController, :unsubscribe)
|
post("/pleroma/accounts/:id/unsubscribe", MastodonAPIController, :unsubscribe)
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.MastodonAPI.DomainBlockControllerTest do
|
||||||
|
use Pleroma.Web.ConnCase, async: true
|
||||||
|
|
||||||
|
alias Pleroma.User
|
||||||
|
|
||||||
|
import Pleroma.Factory
|
||||||
|
|
||||||
|
test "blocking / unblocking a domain", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"})
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> post("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
|
||||||
|
|
||||||
|
assert %{} = json_response(conn, 200)
|
||||||
|
user = User.get_cached_by_ap_id(user.ap_id)
|
||||||
|
assert User.blocks?(user, other_user)
|
||||||
|
|
||||||
|
conn =
|
||||||
|
build_conn()
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> delete("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
|
||||||
|
|
||||||
|
assert %{} = json_response(conn, 200)
|
||||||
|
user = User.get_cached_by_ap_id(user.ap_id)
|
||||||
|
refute User.blocks?(user, other_user)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "getting a list of domain blocks", %{conn: conn} do
|
||||||
|
user = insert(:user)
|
||||||
|
|
||||||
|
{:ok, user} = User.block_domain(user, "bad.site")
|
||||||
|
{:ok, user} = User.block_domain(user, "even.worse.site")
|
||||||
|
|
||||||
|
conn =
|
||||||
|
conn
|
||||||
|
|> assign(:user, user)
|
||||||
|
|> get("/api/v1/domain_blocks")
|
||||||
|
|
||||||
|
domain_blocks = json_response(conn, 200)
|
||||||
|
|
||||||
|
assert "bad.site" in domain_blocks
|
||||||
|
assert "even.worse.site" in domain_blocks
|
||||||
|
end
|
||||||
|
end
|
|
@ -1176,46 +1176,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|
||||||
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "blocking / unblocking a domain", %{conn: conn} do
|
|
||||||
user = insert(:user)
|
|
||||||
other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"})
|
|
||||||
|
|
||||||
conn =
|
|
||||||
conn
|
|
||||||
|> assign(:user, user)
|
|
||||||
|> post("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
|
|
||||||
|
|
||||||
assert %{} = json_response(conn, 200)
|
|
||||||
user = User.get_cached_by_ap_id(user.ap_id)
|
|
||||||
assert User.blocks?(user, other_user)
|
|
||||||
|
|
||||||
conn =
|
|
||||||
build_conn()
|
|
||||||
|> assign(:user, user)
|
|
||||||
|> delete("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
|
|
||||||
|
|
||||||
assert %{} = json_response(conn, 200)
|
|
||||||
user = User.get_cached_by_ap_id(user.ap_id)
|
|
||||||
refute User.blocks?(user, other_user)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "getting a list of domain blocks", %{conn: conn} do
|
|
||||||
user = insert(:user)
|
|
||||||
|
|
||||||
{:ok, user} = User.block_domain(user, "bad.site")
|
|
||||||
{:ok, user} = User.block_domain(user, "even.worse.site")
|
|
||||||
|
|
||||||
conn =
|
|
||||||
conn
|
|
||||||
|> assign(:user, user)
|
|
||||||
|> get("/api/v1/domain_blocks")
|
|
||||||
|
|
||||||
domain_blocks = json_response(conn, 200)
|
|
||||||
|
|
||||||
assert "bad.site" in domain_blocks
|
|
||||||
assert "even.worse.site" in domain_blocks
|
|
||||||
end
|
|
||||||
|
|
||||||
test "unimplemented follow_requests, blocks, domain blocks" do
|
test "unimplemented follow_requests, blocks, domain blocks" do
|
||||||
user = insert(:user)
|
user = insert(:user)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue