summaryrefslogtreecommitdiff
path: root/test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs')
-rw-r--r--test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs152
1 files changed, 152 insertions, 0 deletions
diff --git a/test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs
new file mode 100644
index 000000000..0d426ec34
--- /dev/null
+++ b/test/pleroma/web/mastodon_api/controllers/filter_controller_test.exs
@@ -0,0 +1,152 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.MastodonAPI.FilterControllerTest do
+ use Pleroma.Web.ConnCase
+
+ alias Pleroma.Web.MastodonAPI.FilterView
+
+ test "creating a filter" do
+ %{conn: conn} = oauth_access(["write:filters"])
+
+ filter = %Pleroma.Filter{
+ phrase: "knights",
+ context: ["home"]
+ }
+
+ conn =
+ conn
+ |> put_req_header("content-type", "application/json")
+ |> post("/api/v1/filters", %{"phrase" => filter.phrase, context: filter.context})
+
+ assert response = json_response_and_validate_schema(conn, 200)
+ assert response["phrase"] == filter.phrase
+ assert response["context"] == filter.context
+ assert response["irreversible"] == false
+ assert response["id"] != nil
+ assert response["id"] != ""
+ end
+
+ test "fetching a list of filters" do
+ %{user: user, conn: conn} = oauth_access(["read:filters"])
+
+ query_one = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 1,
+ phrase: "knights",
+ context: ["home"]
+ }
+
+ query_two = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 2,
+ phrase: "who",
+ context: ["home"]
+ }
+
+ {:ok, filter_one} = Pleroma.Filter.create(query_one)
+ {:ok, filter_two} = Pleroma.Filter.create(query_two)
+
+ response =
+ conn
+ |> get("/api/v1/filters")
+ |> json_response_and_validate_schema(200)
+
+ assert response ==
+ render_json(
+ FilterView,
+ "index.json",
+ filters: [filter_two, filter_one]
+ )
+ end
+
+ test "get a filter" do
+ %{user: user, conn: conn} = oauth_access(["read:filters"])
+
+ # check whole_word false
+ query = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 2,
+ phrase: "knight",
+ context: ["home"],
+ whole_word: false
+ }
+
+ {:ok, filter} = Pleroma.Filter.create(query)
+
+ conn = get(conn, "/api/v1/filters/#{filter.filter_id}")
+
+ assert response = json_response_and_validate_schema(conn, 200)
+ assert response["whole_word"] == false
+
+ # check whole_word true
+ %{user: user, conn: conn} = oauth_access(["read:filters"])
+
+ query = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 3,
+ phrase: "knight",
+ context: ["home"],
+ whole_word: true
+ }
+
+ {:ok, filter} = Pleroma.Filter.create(query)
+
+ conn = get(conn, "/api/v1/filters/#{filter.filter_id}")
+
+ assert response = json_response_and_validate_schema(conn, 200)
+ assert response["whole_word"] == true
+ end
+
+ test "update a filter" do
+ %{user: user, conn: conn} = oauth_access(["write:filters"])
+
+ query = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 2,
+ phrase: "knight",
+ context: ["home"],
+ hide: true,
+ whole_word: true
+ }
+
+ {:ok, _filter} = Pleroma.Filter.create(query)
+
+ new = %Pleroma.Filter{
+ phrase: "nii",
+ context: ["home"]
+ }
+
+ conn =
+ conn
+ |> put_req_header("content-type", "application/json")
+ |> put("/api/v1/filters/#{query.filter_id}", %{
+ phrase: new.phrase,
+ context: new.context
+ })
+
+ assert response = json_response_and_validate_schema(conn, 200)
+ assert response["phrase"] == new.phrase
+ assert response["context"] == new.context
+ assert response["irreversible"] == true
+ assert response["whole_word"] == true
+ end
+
+ test "delete a filter" do
+ %{user: user, conn: conn} = oauth_access(["write:filters"])
+
+ query = %Pleroma.Filter{
+ user_id: user.id,
+ filter_id: 2,
+ phrase: "knight",
+ context: ["home"]
+ }
+
+ {:ok, filter} = Pleroma.Filter.create(query)
+
+ conn = delete(conn, "/api/v1/filters/#{filter.filter_id}")
+
+ assert json_response_and_validate_schema(conn, 200) == %{}
+ end
+end