logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

filter_controller_test.exs (3890B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.MastodonAPI.FilterControllerTest do
  5. use Pleroma.Web.ConnCase
  6. alias Pleroma.Web.MastodonAPI.FilterView
  7. test "creating a filter" do
  8. %{conn: conn} = oauth_access(["write:filters"])
  9. filter = %Pleroma.Filter{
  10. phrase: "knights",
  11. context: ["home"]
  12. }
  13. conn =
  14. conn
  15. |> put_req_header("content-type", "application/json")
  16. |> post("/api/v1/filters", %{"phrase" => filter.phrase, context: filter.context})
  17. assert response = json_response_and_validate_schema(conn, 200)
  18. assert response["phrase"] == filter.phrase
  19. assert response["context"] == filter.context
  20. assert response["irreversible"] == false
  21. assert response["id"] != nil
  22. assert response["id"] != ""
  23. end
  24. test "fetching a list of filters" do
  25. %{user: user, conn: conn} = oauth_access(["read:filters"])
  26. query_one = %Pleroma.Filter{
  27. user_id: user.id,
  28. filter_id: 1,
  29. phrase: "knights",
  30. context: ["home"]
  31. }
  32. query_two = %Pleroma.Filter{
  33. user_id: user.id,
  34. filter_id: 2,
  35. phrase: "who",
  36. context: ["home"]
  37. }
  38. {:ok, filter_one} = Pleroma.Filter.create(query_one)
  39. {:ok, filter_two} = Pleroma.Filter.create(query_two)
  40. response =
  41. conn
  42. |> get("/api/v1/filters")
  43. |> json_response_and_validate_schema(200)
  44. assert response ==
  45. render_json(
  46. FilterView,
  47. "index.json",
  48. filters: [filter_two, filter_one]
  49. )
  50. end
  51. test "get a filter" do
  52. %{user: user, conn: conn} = oauth_access(["read:filters"])
  53. # check whole_word false
  54. query = %Pleroma.Filter{
  55. user_id: user.id,
  56. filter_id: 2,
  57. phrase: "knight",
  58. context: ["home"],
  59. whole_word: false
  60. }
  61. {:ok, filter} = Pleroma.Filter.create(query)
  62. conn = get(conn, "/api/v1/filters/#{filter.filter_id}")
  63. assert response = json_response_and_validate_schema(conn, 200)
  64. assert response["whole_word"] == false
  65. # check whole_word true
  66. %{user: user, conn: conn} = oauth_access(["read:filters"])
  67. query = %Pleroma.Filter{
  68. user_id: user.id,
  69. filter_id: 3,
  70. phrase: "knight",
  71. context: ["home"],
  72. whole_word: true
  73. }
  74. {:ok, filter} = Pleroma.Filter.create(query)
  75. conn = get(conn, "/api/v1/filters/#{filter.filter_id}")
  76. assert response = json_response_and_validate_schema(conn, 200)
  77. assert response["whole_word"] == true
  78. end
  79. test "update a filter" do
  80. %{user: user, conn: conn} = oauth_access(["write:filters"])
  81. query = %Pleroma.Filter{
  82. user_id: user.id,
  83. filter_id: 2,
  84. phrase: "knight",
  85. context: ["home"],
  86. hide: true,
  87. whole_word: true
  88. }
  89. {:ok, _filter} = Pleroma.Filter.create(query)
  90. new = %Pleroma.Filter{
  91. phrase: "nii",
  92. context: ["home"]
  93. }
  94. conn =
  95. conn
  96. |> put_req_header("content-type", "application/json")
  97. |> put("/api/v1/filters/#{query.filter_id}", %{
  98. phrase: new.phrase,
  99. context: new.context
  100. })
  101. assert response = json_response_and_validate_schema(conn, 200)
  102. assert response["phrase"] == new.phrase
  103. assert response["context"] == new.context
  104. assert response["irreversible"] == true
  105. assert response["whole_word"] == true
  106. end
  107. test "delete a filter" do
  108. %{user: user, conn: conn} = oauth_access(["write:filters"])
  109. query = %Pleroma.Filter{
  110. user_id: user.id,
  111. filter_id: 2,
  112. phrase: "knight",
  113. context: ["home"]
  114. }
  115. {:ok, filter} = Pleroma.Filter.create(query)
  116. conn = delete(conn, "/api/v1/filters/#{filter.filter_id}")
  117. assert json_response_and_validate_schema(conn, 200) == %{}
  118. end
  119. end