1 defmodule Pleroma.Web.AkkomaAPI.FrontendSettingsControllerTest do
2 use Pleroma.Web.ConnCase, async: true
5 alias Pleroma.Akkoma.FrontendSettingsProfile
7 describe "GET /api/v1/akkoma/frontend_settings/:frontend_name" do
8 test "it returns a list of profiles" do
9 %{conn: conn, user: user} = oauth_access(["read"])
11 insert(:frontend_setting_profile, user: user, frontend_name: "test", profile_name: "test1")
12 insert(:frontend_setting_profile, user: user, frontend_name: "test", profile_name: "test2")
16 |> get("/api/v1/akkoma/frontend_settings/test")
17 |> json_response_and_validate_schema(200)
20 %{"name" => "test1", "version" => 1},
21 %{"name" => "test2", "version" => 1}
26 describe "GET /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
27 test "it returns 404 if not found" do
28 %{conn: conn} = oauth_access(["read"])
31 |> get("/api/v1/akkoma/frontend_settings/unknown_frontend/unknown_profile")
32 |> json_response_and_validate_schema(404)
35 test "it returns 200 if found" do
36 %{conn: conn, user: user} = oauth_access(["read"])
38 insert(:frontend_setting_profile,
40 frontend_name: "test",
41 profile_name: "test1",
42 settings: %{"test" => "test"}
47 |> get("/api/v1/akkoma/frontend_settings/test/test1")
48 |> json_response_and_validate_schema(200)
50 assert response == %{"settings" => %{"test" => "test"}, "version" => 1}
54 describe "PUT /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
55 test "puts a config" do
56 %{conn: conn, user: user} = oauth_access(["write"])
57 settings = %{"test" => "test2"}
61 |> put_req_header("content-type", "application/json")
62 |> put("/api/v1/akkoma/frontend_settings/test/test1", %{
63 "settings" => settings,
66 |> json_response_and_validate_schema(200)
68 assert response == settings
70 assert %FrontendSettingsProfile{settings: ^settings} =
71 FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(
78 test "refuses to overwrite a newer config" do
79 %{conn: conn, user: user} = oauth_access(["write"])
81 insert(:frontend_setting_profile,
83 frontend_name: "test",
84 profile_name: "test1",
85 settings: %{"test" => "test"},
90 |> put_req_header("content-type", "application/json")
91 |> put("/api/v1/akkoma/frontend_settings/test/test1", %{
92 "settings" => %{"test" => "test2"},
95 |> json_response_and_validate_schema(422)
99 describe "DELETE /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
100 test "deletes a config" do
101 %{conn: conn, user: user} = oauth_access(["write"])
103 insert(:frontend_setting_profile,
105 frontend_name: "test",
106 profile_name: "test1",
107 settings: %{"test" => "test"},
112 |> delete("/api/v1/akkoma/frontend_settings/test/test1")
113 |> json_response_and_validate_schema(200)
115 assert FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(