Add spec for AccountController.lists

This commit is contained in:
Egor Kislitsyn 2020-04-08 23:51:46 +04:00
parent e105cc12b6
commit 1b680a98ae
No known key found for this signature in database
GPG key ID: 1B49CB15B71E7805
5 changed files with 61 additions and 2 deletions

View file

@ -14,6 +14,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest
alias Pleroma.Web.ApiSpec.Schemas.BooleanLike alias Pleroma.Web.ApiSpec.Schemas.BooleanLike
alias Pleroma.Web.ApiSpec.Schemas.ListsResponse
alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse
alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
@ -191,7 +192,22 @@ def following_operation do
} }
end end
def lists_operation, do: :ok def lists_operation do
%Operation{
tags: ["accounts"],
summary: "Lists containing this account",
operationId: "AccountController.lists",
security: [%{"oAuth" => ["read:lists"]}],
description: "User lists that you have added this account to.",
parameters: [
%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}
],
responses: %{
200 => Operation.response("Lists", "application/json", ListsResponse)
}
}
end
def follow_operation, do: :ok def follow_operation, do: :ok
def unfollow_operation, do: :ok def unfollow_operation, do: :ok
def mute_operation, do: :ok def mute_operation, do: :ok

View file

@ -0,0 +1,25 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.Schemas.List do
alias OpenApiSpex.Schema
require OpenApiSpex
OpenApiSpex.schema(%{
title: "List",
description: "Response schema for a list",
type: :object,
properties: %{
id: %Schema{type: :string},
title: %Schema{type: :string}
},
example: %{
"JSON" => %{
"id" => "123",
"title" => "my list"
}
}
})
end

View file

@ -0,0 +1,16 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.Schemas.ListsResponse do
alias Pleroma.Web.ApiSpec.Schemas.List
require OpenApiSpex
OpenApiSpex.schema(%{
title: "ListsResponse",
description: "Response schema for lists",
type: :array,
items: List
})
end

View file

@ -91,7 +91,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
:show, :show,
:statuses, :statuses,
:followers, :followers,
:following :following,
:lists
] ]
) )

View file

@ -1051,6 +1051,7 @@ test "returns lists to which the account belongs" do
|> json_response(200) |> json_response(200)
assert res == [%{"id" => to_string(list.id), "title" => "Test List"}] assert res == [%{"id" => to_string(list.id), "title" => "Test List"}]
assert_schema(res, "ListsResponse", ApiSpec.spec())
end end
end end