Browse Source

Extract domain blocks actions from `MastodonAPIController` to `DomainBlockController`

object-id-column
Egor Kislitsyn 4 years ago
parent
commit
408750b94e
5 changed files with 80 additions and 57 deletions
  1. +26
    -0
      lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex
  2. +0
    -14
      lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
  3. +3
    -3
      lib/pleroma/web/router.ex
  4. +51
    -0
      test/web/mastodon_api/controllers/domain_block_controller_test.exs
  5. +0
    -40
      test/web/mastodon_api/mastodon_api_controller_test.exs

+ 26
- 0
lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex View File

@@ -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

+ 0
- 14
lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex View File

@@ -715,20 +715,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
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
with %User{} = subscription_target <- User.get_cached_by_id(id),
{:ok, subscription_target} = User.subscribe(user, subscription_target) do


+ 3
- 3
lib/pleroma/web/router.ex View File

@@ -346,7 +346,7 @@ defmodule Pleroma.Web.Router do
get("/lists/:id", ListController, :show)
get("/lists/:id/accounts", ListController, :list_accounts)

get("/domain_blocks", MastodonAPIController, :domain_blocks)
get("/domain_blocks", DomainBlockController, :index)

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/reject", MastodonAPIController, :reject_follow_request)

post("/domain_blocks", MastodonAPIController, :block_domain)
delete("/domain_blocks", MastodonAPIController, :unblock_domain)
post("/domain_blocks", DomainBlockController, :create)
delete("/domain_blocks", DomainBlockController, :delete)

post("/pleroma/accounts/:id/subscribe", MastodonAPIController, :subscribe)
post("/pleroma/accounts/:id/unsubscribe", MastodonAPIController, :unsubscribe)


+ 51
- 0
test/web/mastodon_api/controllers/domain_block_controller_test.exs View File

@@ -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

+ 0
- 40
test/web/mastodon_api/mastodon_api_controller_test.exs View File

@@ -1176,46 +1176,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert [%{"id" => ^other_user_id}] = json_response(conn, 200)
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
user = insert(:user)



Loading…
Cancel
Save