Add spec for AccountController.show
authorEgor Kislitsyn <egor@kislitsyn.com>
Tue, 7 Apr 2020 14:53:12 +0000 (18:53 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Mon, 13 Apr 2020 14:16:07 +0000 (18:16 +0400)
lib/pleroma/web/api_spec/operations/account_operation.ex
lib/pleroma/web/mastodon_api/controllers/account_controller.ex
test/web/api_spec/account_operation_test.exs

index 352f66e9d163f7921fc24025dbb46cc405ab3c0e..5b1b2eb4c5e37cd05a96e6e0967712ff4521a08e 100644 (file)
@@ -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
index 1652e3a1b4fd0826eb2d20b8f7d1f270acbe262e..67375f31c8a0e7c0577d651cdbeee3c7f11567e9 100644 (file)
@@ -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)
index 58a38d8affacff44bc276da7216e5042a1c8aefc..6cc08ee0e988229e66e0dafc4db37a82f52f7aef 100644 (file)
@@ -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