aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2020-04-07 18:53:12 +0400
committerEgor Kislitsyn <egor@kislitsyn.com>2020-04-13 18:16:07 +0400
commit278b3fa0ad0ca58a9e5549e98d24944bbe0bf766 (patch)
tree7a2605c85259b0c554c8f49a2b6b1387dd309ea4
parentd7d6a83233f24b80005b4f49a8697535620e4b83 (diff)
downloadpleroma-278b3fa0ad0ca58a9e5549e98d24944bbe0bf766.tar.gz
Add spec for AccountController.show
-rw-r--r--lib/pleroma/web/api_spec/operations/account_operation.ex16
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/account_controller.ex4
-rw-r--r--test/web/api_spec/account_operation_test.exs16
3 files changed, 32 insertions, 4 deletions
diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex
index 352f66e9d..5b1b2eb4c 100644
--- a/lib/pleroma/web/api_spec/operations/account_operation.ex
+++ b/lib/pleroma/web/api_spec/operations/account_operation.ex
@@ -86,7 +86,21 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
end
def show_operation do
- :ok
+ %Operation{
+ tags: ["accounts"],
+ summary: "Account",
+ operationId: "AccountController.show",
+ description: "View information about a profile.",
+ parameters: [
+ Operation.parameter(:id, :path, :string, "Account ID or nickname",
+ example: "123",
+ required: true
+ )
+ ],
+ responses: %{
+ 200 => Operation.response("Account", "application/json", Account)
+ }
+ }
end
def statuses_operation do
diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex
index 1652e3a1b..67375f31c 100644
--- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex
@@ -83,7 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
plug(
OpenApiSpex.Plug.CastAndValidate,
[render_error: Pleroma.Web.ApiSpec.RenderError]
- when action in [:create, :verify_credentials, :update_credentials, :relationships]
+ when action in [:create, :verify_credentials, :update_credentials, :relationships, :show]
)
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
@@ -239,7 +239,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
def relationships(%{assigns: %{user: _user}} = conn, _), do: json(conn, [])
@doc "GET /api/v1/accounts/:id"
- def show(%{assigns: %{user: for_user}} = conn, %{"id" => nickname_or_id}) do
+ def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id}) do
with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user),
true <- User.visible_for?(user, for_user) do
render(conn, "show.json", user: user, for: for_user)
diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs
index 58a38d8af..6cc08ee0e 100644
--- a/test/web/api_spec/account_operation_test.exs
+++ b/test/web/api_spec/account_operation_test.exs
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.AccountOperationTest do
- use Pleroma.Web.ConnCase, async: true
+ use Pleroma.Web.ConnCase
alias Pleroma.Web.ApiSpec
alias Pleroma.Web.ApiSpec.Schemas.Account
@@ -108,4 +108,18 @@ defmodule Pleroma.Web.ApiSpec.AccountOperationTest do
assert_schema([relationship], "AccountRelationshipsResponse", api_spec)
end
+
+ test "/api/v1/accounts/:id produces Account", %{
+ conn: conn
+ } do
+ user = insert(:user)
+ api_spec = ApiSpec.spec()
+
+ assert resp =
+ conn
+ |> get("/api/v1/accounts/#{user.id}")
+ |> json_response(:ok)
+
+ assert_schema(resp, "Account", api_spec)
+ end
end