1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.MastodonAPI.DomainBlockControllerTest do
6 # TODO: Should not need Cachex
7 use Pleroma.Web.ConnCase
11 import Pleroma.Factory
13 test "blocking / unblocking a domain" do
14 %{user: user, conn: conn} = oauth_access(["write:blocks"])
15 other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"})
19 |> put_req_header("content-type", "application/json")
20 |> post("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
22 assert %{} == json_response_and_validate_schema(ret_conn, 200)
23 user = User.get_cached_by_ap_id(user.ap_id)
24 assert User.blocks?(user, other_user)
28 |> put_req_header("content-type", "application/json")
29 |> delete("/api/v1/domain_blocks", %{"domain" => "dogwhistle.zone"})
31 assert %{} == json_response_and_validate_schema(ret_conn, 200)
32 user = User.get_cached_by_ap_id(user.ap_id)
33 refute User.blocks?(user, other_user)
36 test "blocking a domain via query params" do
37 %{user: user, conn: conn} = oauth_access(["write:blocks"])
38 other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"})
42 |> put_req_header("content-type", "application/json")
43 |> post("/api/v1/domain_blocks?domain=dogwhistle.zone")
45 assert %{} == json_response_and_validate_schema(ret_conn, 200)
46 user = User.get_cached_by_ap_id(user.ap_id)
47 assert User.blocks?(user, other_user)
50 test "unblocking a domain via query params" do
51 %{user: user, conn: conn} = oauth_access(["write:blocks"])
52 other_user = insert(:user, %{ap_id: "https://dogwhistle.zone/@pundit"})
54 User.block_domain(user, "dogwhistle.zone")
55 user = refresh_record(user)
56 assert User.blocks?(user, other_user)
60 |> put_req_header("content-type", "application/json")
61 |> delete("/api/v1/domain_blocks?domain=dogwhistle.zone")
63 assert %{} == json_response_and_validate_schema(ret_conn, 200)
64 user = User.get_cached_by_ap_id(user.ap_id)
65 refute User.blocks?(user, other_user)
68 test "getting a list of domain blocks" do
69 %{user: user, conn: conn} = oauth_access(["read:blocks"])
71 {:ok, user} = User.block_domain(user, "bad.site")
72 {:ok, user} = User.block_domain(user, "even.worse.site")
74 assert ["even.worse.site", "bad.site"] ==
76 |> assign(:user, user)
77 |> get("/api/v1/domain_blocks")
78 |> json_response_and_validate_schema(200)