mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-06-10 09:19:34 +00:00
d415686bb9
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
149 lines
4.2 KiB
Elixir
149 lines
4.2 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do
|
|
use Pleroma.Web.ConnCase
|
|
|
|
alias Pleroma.BookmarkFolder
|
|
# alias Pleroma.Object
|
|
# alias Pleroma.Tests.Helpers
|
|
# alias Pleroma.UnstubbedConfigMock, as: ConfigMock
|
|
# alias Pleroma.User
|
|
# alias Pleroma.Web.ActivityPub.ActivityPub
|
|
# alias Pleroma.Web.CommonAPI
|
|
|
|
# import Mox
|
|
import Pleroma.Factory
|
|
|
|
describe "GET /api/v1/pleroma/bookmark_folders" do
|
|
setup do: oauth_access(["read:bookmarks"])
|
|
|
|
test "it lists bookmark folders", %{conn: conn, user: user} do
|
|
{:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder")
|
|
|
|
folder_id = folder.id
|
|
|
|
result =
|
|
conn
|
|
|> get("/api/v1/pleroma/bookmark_folders")
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert [
|
|
%{
|
|
"id" => ^folder_id,
|
|
"name" => "Bookmark folder",
|
|
"emoji" => nil,
|
|
"source" => %{
|
|
"emoji" => nil
|
|
}
|
|
}
|
|
] = result
|
|
end
|
|
end
|
|
|
|
describe "POST /api/v1/pleroma/bookmark_folders" do
|
|
setup do: oauth_access(["write:bookmarks"])
|
|
|
|
test "it creates a bookmark folder", %{conn: conn} do
|
|
result =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> post("/api/v1/pleroma/bookmark_folders", %{
|
|
name: "Bookmark folder",
|
|
emoji: "📁"
|
|
})
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert %{
|
|
"name" => "Bookmark folder",
|
|
"emoji" => "📁",
|
|
"source" => %{
|
|
"emoji" => "📁"
|
|
}
|
|
} = result
|
|
end
|
|
|
|
test "it returns error for invalid emoji", %{conn: conn} do
|
|
result =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> post("/api/v1/pleroma/bookmark_folders", %{
|
|
name: "Bookmark folder",
|
|
emoji: "not an emoji"
|
|
})
|
|
|> json_response_and_validate_schema(422)
|
|
|
|
assert %{"error" => "Invalid emoji"} = result
|
|
end
|
|
end
|
|
|
|
describe "PATCH /api/v1/pleroma/bookmark_folders/:id" do
|
|
setup do: oauth_access(["write:bookmarks"])
|
|
|
|
test "it updates a bookmark folder", %{conn: conn, user: user} do
|
|
{:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder")
|
|
|
|
result =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}", %{
|
|
name: "bookmark folder"
|
|
})
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
assert %{
|
|
"name" => "bookmark folder"
|
|
} = result
|
|
end
|
|
|
|
test "it returns error when updating others' folders", %{conn: conn} do
|
|
other_user = insert(:user)
|
|
|
|
{:ok, folder} = BookmarkFolder.create(other_user.id, "Bookmark folder")
|
|
|
|
result =
|
|
conn
|
|
|> put_req_header("content-type", "application/json")
|
|
|> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}", %{
|
|
name: "bookmark folder"
|
|
})
|
|
|> json_response_and_validate_schema(403)
|
|
|
|
assert %{
|
|
"error" => "Access denied"
|
|
} = result
|
|
end
|
|
end
|
|
|
|
describe "DELETE /api/v1/pleroma/bookmark_folders/:id" do
|
|
setup do: oauth_access(["write:bookmarks"])
|
|
|
|
test "it deleting a bookmark folder", %{conn: conn, user: user} do
|
|
{:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder")
|
|
|
|
assert conn
|
|
|> delete("/api/v1/pleroma/bookmark_folders/#{folder.id}")
|
|
|> json_response_and_validate_schema(200)
|
|
|
|
folders = BookmarkFolder.for_user(user.id)
|
|
|
|
assert length(folders) == 0
|
|
end
|
|
|
|
test "it returns error when deleting others' folders", %{conn: conn} do
|
|
other_user = insert(:user)
|
|
|
|
{:ok, folder} = BookmarkFolder.create(other_user.id, "Bookmark folder")
|
|
|
|
result =
|
|
conn
|
|
|> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}")
|
|
|> json_response_and_validate_schema(403)
|
|
|
|
assert %{
|
|
"error" => "Access denied"
|
|
} = result
|
|
end
|
|
end
|
|
end
|