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.FilterControllerTest do
6 use Pleroma.Web.ConnCase
8 alias Pleroma.Web.MastodonAPI.FilterView
10 test "creating a filter" do
11 %{conn: conn} = oauth_access(["write:filters"])
13 filter = %Pleroma.Filter{
20 |> put_req_header("content-type", "application/json")
21 |> post("/api/v1/filters", %{"phrase" => filter.phrase, context: filter.context})
23 assert response = json_response_and_validate_schema(conn, 200)
24 assert response["phrase"] == filter.phrase
25 assert response["context"] == filter.context
26 assert response["irreversible"] == false
27 assert response["id"] != nil
28 assert response["id"] != ""
31 test "fetching a list of filters" do
32 %{user: user, conn: conn} = oauth_access(["read:filters"])
34 query_one = %Pleroma.Filter{
41 query_two = %Pleroma.Filter{
48 {:ok, filter_one} = Pleroma.Filter.create(query_one)
49 {:ok, filter_two} = Pleroma.Filter.create(query_two)
53 |> get("/api/v1/filters")
54 |> json_response_and_validate_schema(200)
60 filters: [filter_two, filter_one]
64 test "get a filter" do
65 %{user: user, conn: conn} = oauth_access(["read:filters"])
67 query = %Pleroma.Filter{
74 {:ok, filter} = Pleroma.Filter.create(query)
76 conn = get(conn, "/api/v1/filters/#{filter.filter_id}")
78 assert response = json_response_and_validate_schema(conn, 200)
81 test "update a filter" do
82 %{user: user, conn: conn} = oauth_access(["write:filters"])
84 query = %Pleroma.Filter{
92 {:ok, _filter} = Pleroma.Filter.create(query)
94 new = %Pleroma.Filter{
101 |> put_req_header("content-type", "application/json")
102 |> put("/api/v1/filters/#{query.filter_id}", %{
107 assert response = json_response_and_validate_schema(conn, 200)
108 assert response["phrase"] == new.phrase
109 assert response["context"] == new.context
110 assert response["irreversible"] == true
113 test "delete a filter" do
114 %{user: user, conn: conn} = oauth_access(["write:filters"])
116 query = %Pleroma.Filter{
123 {:ok, filter} = Pleroma.Filter.create(query)
125 conn = delete(conn, "/api/v1/filters/#{filter.filter_id}")
127 assert json_response_and_validate_schema(conn, 200) == %{}