1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 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, async: true
8 alias Pleroma.Web.MastodonAPI.FilterView
10 import Pleroma.Factory
12 test "creating a filter", %{conn: conn} do
15 filter = %Pleroma.Filter{
22 |> assign(:user, user)
23 |> post("/api/v1/filters", %{"phrase" => filter.phrase, context: filter.context})
25 assert response = json_response(conn, 200)
26 assert response["phrase"] == filter.phrase
27 assert response["context"] == filter.context
28 assert response["irreversible"] == false
29 assert response["id"] != nil
30 assert response["id"] != ""
33 test "fetching a list of filters", %{conn: conn} do
36 query_one = %Pleroma.Filter{
43 query_two = %Pleroma.Filter{
50 {:ok, filter_one} = Pleroma.Filter.create(query_one)
51 {:ok, filter_two} = Pleroma.Filter.create(query_two)
55 |> assign(:user, user)
56 |> get("/api/v1/filters")
63 filters: [filter_two, filter_one]
67 test "get a filter", %{conn: conn} do
70 query = %Pleroma.Filter{
77 {:ok, filter} = Pleroma.Filter.create(query)
81 |> assign(:user, user)
82 |> get("/api/v1/filters/#{filter.filter_id}")
84 assert _response = json_response(conn, 200)
87 test "update a filter", %{conn: conn} do
90 query = %Pleroma.Filter{
97 {:ok, _filter} = Pleroma.Filter.create(query)
99 new = %Pleroma.Filter{
106 |> assign(:user, user)
107 |> put("/api/v1/filters/#{query.filter_id}", %{
112 assert response = json_response(conn, 200)
113 assert response["phrase"] == new.phrase
114 assert response["context"] == new.context
117 test "delete a filter", %{conn: conn} do
120 query = %Pleroma.Filter{
127 {:ok, filter} = Pleroma.Filter.create(query)
131 |> assign(:user, user)
132 |> delete("/api/v1/filters/#{filter.filter_id}")
134 assert response = json_response(conn, 200)
135 assert response == %{}