mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-12-15 14:50:33 +00:00
d7d159c49f
The spec was copied from another endpoint, including the operation id, leading to scrubbing the valid parameters from the request and simply not working.
137 lines
4.1 KiB
Elixir
137 lines
4.1 KiB
Elixir
defmodule Pleroma.Web.AkkomaAPI.FrontendSettingsControllerTest do
|
|
use Pleroma.Web.ConnCase, async: false
|
|
|
|
import Pleroma.Factory
|
|
alias Pleroma.Akkoma.FrontendSettingsProfile
|
|
|
|
describe "GET /api/v1/akkoma/frontend_settings/:frontend_name" do
|
|
test "it returns a list of profiles" do
|
|
%{conn: conn, user: user} = oauth_access(["read"])
|
|
|
|
insert(:frontend_setting_profile, user: user, frontend_name: "test", profile_name: "test1")
|
|
insert(:frontend_setting_profile, user: user, frontend_name: "test", profile_name: "test2")
|
|
|
|
response =
|
|
conn
|
|
|> get("/api/v1/akkoma/frontend_settings/test")
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert response == [
|
|
%{"name" => "test1", "version" => 1},
|
|
%{"name" => "test2", "version" => 1}
|
|
]
|
|
end
|
|
end
|
|
|
|
describe "GET /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
|
|
test "it returns 404 if not found" do
|
|
%{conn: conn} = oauth_access(["read"])
|
|
|
|
conn
|
|
|> get("/api/v1/akkoma/frontend_settings/unknown_frontend/unknown_profile")
|
|
|> json_response_and_validate_schema(404)
|
|
end
|
|
|
|
test "it returns 200 if found" do
|
|
%{conn: conn, user: user} = oauth_access(["read"])
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: "test",
|
|
profile_name: "test1",
|
|
settings: %{"test" => "test"}
|
|
)
|
|
|
|
response =
|
|
conn
|
|
|> get("/api/v1/akkoma/frontend_settings/test/test1")
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert response == %{"settings" => %{"test" => "test"}, "version" => 1}
|
|
end
|
|
end
|
|
|
|
describe "PUT /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
|
|
test "puts a config" do
|
|
%{conn: conn, user: user} = oauth_access(["write"])
|
|
settings = %{"test" => "test2"}
|
|
|
|
response =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> put("/api/v1/akkoma/frontend_settings/test/test1", %{
|
|
"settings" => settings,
|
|
"version" => 1
|
|
})
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert response == settings
|
|
|
|
assert %FrontendSettingsProfile{settings: ^settings} =
|
|
FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(
|
|
user,
|
|
"test",
|
|
"test1"
|
|
)
|
|
end
|
|
|
|
test "refuses to overwrite a newer config" do
|
|
%{conn: conn, user: user} = oauth_access(["write"])
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: "test",
|
|
profile_name: "test1",
|
|
settings: %{"test" => "test"},
|
|
version: 2
|
|
)
|
|
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> put("/api/v1/akkoma/frontend_settings/test/test1", %{
|
|
"settings" => %{"test" => "test2"},
|
|
"version" => 1
|
|
})
|
|
|> json_response_and_validate_schema(422)
|
|
end
|
|
end
|
|
|
|
describe "DELETE /api/v1/akkoma/frontend_settings/:frontend_name/:profile_name" do
|
|
test "deletes a config" do
|
|
%{conn: conn, user: user} = oauth_access(["write"])
|
|
|
|
insert(:frontend_setting_profile,
|
|
user: user,
|
|
frontend_name: "test",
|
|
profile_name: "test1",
|
|
settings: %{"test" => "test"},
|
|
version: 2
|
|
)
|
|
|
|
conn
|
|
|> delete("/api/v1/akkoma/frontend_settings/test/test1")
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert FrontendSettingsProfile.get_by_user_and_frontend_name_and_profile_name(
|
|
user,
|
|
"test",
|
|
"test1"
|
|
) == nil
|
|
end
|
|
end
|
|
|
|
describe "PUT /api/v1/akkoma/preferred_frontend" do
|
|
test "sets a cookie with selected frontend" do
|
|
%{conn: conn} = oauth_access(["read"])
|
|
|
|
response =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> put("/api/v1/akkoma/preferred_frontend", %{"frontend_name" => "pleroma-fe/stable"})
|
|
|
|
json_response_and_validate_schema(response, 200)
|
|
assert %{"preferred_frontend" => %{value: "pleroma-fe/stable"}} = response.resp_cookies
|
|
end
|
|
end
|
|
end
|