logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

settings_controller_test.exs (3121B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.PleromaAPI.SettingsControllerTest do
  5. use Pleroma.Web.ConnCase
  6. import Pleroma.Factory
  7. describe "GET /api/v1/pleroma/settings/:app" do
  8. setup do
  9. oauth_access(["read:accounts"])
  10. end
  11. test "it gets empty settings", %{conn: conn} do
  12. response =
  13. conn
  14. |> get("/api/v1/pleroma/settings/pleroma-fe")
  15. |> json_response_and_validate_schema(:ok)
  16. assert response == %{}
  17. end
  18. test "it gets settings", %{conn: conn, user: user} do
  19. response =
  20. conn
  21. |> assign(
  22. :user,
  23. struct(user,
  24. pleroma_settings_store: %{
  25. "pleroma-fe" => %{
  26. "foo" => "bar"
  27. }
  28. }
  29. )
  30. )
  31. |> get("/api/v1/pleroma/settings/pleroma-fe")
  32. |> json_response_and_validate_schema(:ok)
  33. assert %{"foo" => "bar"} == response
  34. end
  35. end
  36. describe "POST /api/v1/pleroma/settings/:app" do
  37. setup do
  38. settings = %{
  39. "foo" => "bar",
  40. "nested" => %{
  41. "1" => "2"
  42. }
  43. }
  44. user =
  45. insert(
  46. :user,
  47. %{
  48. pleroma_settings_store: %{
  49. "pleroma-fe" => settings
  50. }
  51. }
  52. )
  53. %{conn: conn} = oauth_access(["write:accounts"], user: user)
  54. %{conn: conn, user: user, settings: settings}
  55. end
  56. test "it adds keys", %{conn: conn} do
  57. response =
  58. conn
  59. |> put_req_header("content-type", "application/json")
  60. |> patch("/api/v1/pleroma/settings/pleroma-fe", %{
  61. "foo" => "edited",
  62. "bar" => "new",
  63. "nested" => %{"3" => "4"}
  64. })
  65. |> json_response_and_validate_schema(:ok)
  66. assert response == %{
  67. "foo" => "edited",
  68. "bar" => "new",
  69. "nested" => %{
  70. "1" => "2",
  71. "3" => "4"
  72. }
  73. }
  74. end
  75. test "it removes keys", %{conn: conn} do
  76. response =
  77. conn
  78. |> put_req_header("content-type", "application/json")
  79. |> patch("/api/v1/pleroma/settings/pleroma-fe", %{
  80. "foo" => nil,
  81. "bar" => nil,
  82. "nested" => %{
  83. "1" => nil,
  84. "3" => nil
  85. }
  86. })
  87. |> json_response_and_validate_schema(:ok)
  88. assert response == %{
  89. "nested" => %{}
  90. }
  91. end
  92. test "it does not override settings for other apps", %{
  93. conn: conn,
  94. user: user,
  95. settings: settings
  96. } do
  97. conn
  98. |> put_req_header("content-type", "application/json")
  99. |> patch("/api/v1/pleroma/settings/admin-fe", %{"foo" => "bar"})
  100. |> json_response_and_validate_schema(:ok)
  101. user = Pleroma.User.get_by_id(user.id)
  102. assert user.pleroma_settings_store == %{
  103. "pleroma-fe" => settings,
  104. "admin-fe" => %{"foo" => "bar"}
  105. }
  106. end
  107. end
  108. end