Move single used schemas to operation schema
authorEgor Kislitsyn <egor@kislitsyn.com>
Mon, 27 Apr 2020 18:55:05 +0000 (22:55 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Mon, 27 Apr 2020 18:55:05 +0000 (22:55 +0400)
21 files changed:
lib/pleroma/web/api_spec/operations/account_operation.ex
lib/pleroma/web/api_spec/operations/custom_emoji_operation.ex
lib/pleroma/web/api_spec/schemas/account.ex
lib/pleroma/web/api_spec/schemas/account_create_request.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_create_response.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_field_attribute.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_follows_request.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_mute_request.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_relationships_response.ex [deleted file]
lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex [deleted file]
lib/pleroma/web/api_spec/schemas/accounts_response.ex [deleted file]
lib/pleroma/web/api_spec/schemas/api_error.ex [moved from lib/pleroma/web/api_spec/schemas/list.ex with 52% similarity]
lib/pleroma/web/api_spec/schemas/custom_emoji.ex [deleted file]
lib/pleroma/web/api_spec/schemas/emoji.ex [moved from lib/pleroma/web/api_spec/schemas/account_emoji.ex with 85% similarity]
lib/pleroma/web/api_spec/schemas/lists_response.ex [deleted file]
lib/pleroma/web/api_spec/schemas/poll.ex
lib/pleroma/web/api_spec/schemas/status.ex
lib/pleroma/web/api_spec/schemas/statuses_response.ex [deleted file]
lib/pleroma/web/mastodon_api/controllers/account_controller.ex
test/web/api_spec/account_operation_test.exs [deleted file]
test/web/mastodon_api/controllers/custom_emoji_controller_test.exs

index bf8d21059e6ad4caceb7400f338db35986f519da..2efe6e9013e265d799e42547d17f79c21c95e8e9 100644 (file)
@@ -7,18 +7,11 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
   alias OpenApiSpex.Reference
   alias OpenApiSpex.Schema
   alias Pleroma.Web.ApiSpec.Schemas.Account
-  alias Pleroma.Web.ApiSpec.Schemas.ApiError
-  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest
-  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse
-  alias Pleroma.Web.ApiSpec.Schemas.AccountFollowsRequest
-  alias Pleroma.Web.ApiSpec.Schemas.AccountMuteRequest
   alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship
-  alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse
-  alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse
-  alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest
+  alias Pleroma.Web.ApiSpec.Schemas.ActorType
+  alias Pleroma.Web.ApiSpec.Schemas.ApiError
   alias Pleroma.Web.ApiSpec.Schemas.BooleanLike
-  alias Pleroma.Web.ApiSpec.Schemas.ListsResponse
-  alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse
+  alias Pleroma.Web.ApiSpec.Schemas.Status
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
 
   import Pleroma.Web.ApiSpec.Helpers
@@ -37,9 +30,9 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       description:
         "Creates a user and account records. Returns an account access token for the app that initiated the request. The app should save this token for later, and should wait for the user to confirm their account by clicking a link in their email inbox.",
       operationId: "AccountController.create",
-      requestBody: request_body("Parameters", AccountCreateRequest, required: true),
+      requestBody: request_body("Parameters", create_request(), required: true),
       responses: %{
-        200 => Operation.response("Account", "application/json", AccountCreateResponse),
+        200 => Operation.response("Account", "application/json", create_response()),
         400 => Operation.response("Error", "application/json", ApiError),
         403 => Operation.response("Error", "application/json", ApiError),
         429 => Operation.response("Error", "application/json", ApiError)
@@ -67,7 +60,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       description: "Update the user's display and preferences.",
       operationId: "AccountController.update_credentials",
       security: [%{"oAuth" => ["write:accounts"]}],
-      requestBody: request_body("Parameters", AccountUpdateCredentialsRequest, required: true),
+      requestBody: request_body("Parameters", update_creadentials_request(), required: true),
       responses: %{
         200 => Operation.response("Account", "application/json", Account),
         403 => Operation.response("Error", "application/json", ApiError)
@@ -94,7 +87,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
         )
       ],
       responses: %{
-        200 => Operation.response("Account", "application/json", AccountRelationshipsResponse)
+        200 => Operation.response("Account", "application/json", array_of_relationships())
       }
     }
   end
@@ -146,7 +139,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
           )
         ] ++ pagination_params(),
       responses: %{
-        200 => Operation.response("Statuses", "application/json", StatusesResponse),
+        200 => Operation.response("Statuses", "application/json", array_of_statuses()),
         404 => Operation.response("Error", "application/json", ApiError)
       }
     }
@@ -163,7 +156,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       parameters:
         [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(),
       responses: %{
-        200 => Operation.response("Accounts", "application/json", AccountsResponse)
+        200 => Operation.response("Accounts", "application/json", array_of_accounts())
       }
     }
   end
@@ -178,7 +171,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
         "Accounts which the given account is following, if network is not hidden by the account owner.",
       parameters:
         [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(),
-      responses: %{200 => Operation.response("Accounts", "application/json", AccountsResponse)}
+      responses: %{200 => Operation.response("Accounts", "application/json", array_of_accounts())}
     }
   end
 
@@ -190,7 +183,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       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)}
+      responses: %{200 => Operation.response("Lists", "application/json", array_of_lists())}
     }
   end
 
@@ -240,7 +233,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       summary: "Mute",
       operationId: "AccountController.mute",
       security: [%{"oAuth" => ["follow", "write:mutes"]}],
-      requestBody: request_body("Parameters", AccountMuteRequest),
+      requestBody: request_body("Parameters", mute_request()),
       description:
         "Mute the given account. Clients should filter statuses and notifications from this account, if received (e.g. due to a boost in the Home timeline).",
       parameters: [
@@ -307,7 +300,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       summary: "Follows",
       operationId: "AccountController.follows",
       security: [%{"oAuth" => ["follow", "write:follows"]}],
-      requestBody: request_body("Parameters", AccountFollowsRequest, required: true),
+      requestBody: request_body("Parameters", follows_request(), required: true),
       responses: %{
         200 => Operation.response("Account", "application/json", AccountRelationship),
         400 => Operation.response("Error", "application/json", ApiError),
@@ -324,7 +317,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       description: "Accounts the user has muted.",
       security: [%{"oAuth" => ["follow", "read:mutes"]}],
       responses: %{
-        200 => Operation.response("Accounts", "application/json", AccountsResponse)
+        200 => Operation.response("Accounts", "application/json", array_of_accounts())
       }
     }
   end
@@ -337,7 +330,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       description: "View your blocks. See also accounts/:id/{block,unblock}",
       security: [%{"oAuth" => ["read:blocks"]}],
       responses: %{
-        200 => Operation.response("Accounts", "application/json", AccountsResponse)
+        200 => Operation.response("Accounts", "application/json", array_of_accounts())
       }
     }
   end
@@ -366,4 +359,343 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
       }
     }
   end
+
+  defp create_request do
+    %Schema{
+      title: "AccountCreateRequest",
+      description: "POST body for creating an account",
+      type: :object,
+      properties: %{
+        reason: %Schema{
+          type: :string,
+          description:
+            "Text that will be reviewed by moderators if registrations require manual approval"
+        },
+        username: %Schema{type: :string, description: "The desired username for the account"},
+        email: %Schema{
+          type: :string,
+          description:
+            "The email address to be used for login. Required when `account_activation_required` is enabled.",
+          format: :email
+        },
+        password: %Schema{
+          type: :string,
+          description: "The password to be used for login",
+          format: :password
+        },
+        agreement: %Schema{
+          type: :boolean,
+          description:
+            "Whether the user agrees to the local rules, terms, and policies. These should be presented to the user in order to allow them to consent before setting this parameter to TRUE."
+        },
+        locale: %Schema{
+          type: :string,
+          description: "The language of the confirmation email that will be sent"
+        },
+        # Pleroma-specific properties:
+        fullname: %Schema{type: :string, description: "Full name"},
+        bio: %Schema{type: :string, description: "Bio", default: ""},
+        captcha_solution: %Schema{
+          type: :string,
+          description: "Provider-specific captcha solution"
+        },
+        captcha_token: %Schema{type: :string, description: "Provider-specific captcha token"},
+        captcha_answer_data: %Schema{type: :string, description: "Provider-specific captcha data"},
+        token: %Schema{
+          type: :string,
+          description: "Invite token required when the registrations aren't public"
+        }
+      },
+      required: [:username, :password, :agreement],
+      example: %{
+        "username" => "cofe",
+        "email" => "cofe@example.com",
+        "password" => "secret",
+        "agreement" => "true",
+        "bio" => "☕️"
+      }
+    }
+  end
+
+  defp create_response do
+    %Schema{
+      title: "AccountCreateResponse",
+      description: "Response schema for an account",
+      type: :object,
+      properties: %{
+        token_type: %Schema{type: :string},
+        access_token: %Schema{type: :string},
+        scope: %Schema{type: :array, items: %Schema{type: :string}},
+        created_at: %Schema{type: :integer, format: :"date-time"}
+      },
+      example: %{
+        "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk",
+        "created_at" => 1_585_918_714,
+        "scope" => ["read", "write", "follow", "push"],
+        "token_type" => "Bearer"
+      }
+    }
+  end
+
+  defp update_creadentials_request do
+    %Schema{
+      title: "AccountUpdateCredentialsRequest",
+      description: "POST body for creating an account",
+      type: :object,
+      properties: %{
+        bot: %Schema{
+          type: :boolean,
+          description: "Whether the account has a bot flag."
+        },
+        display_name: %Schema{
+          type: :string,
+          description: "The display name to use for the profile."
+        },
+        note: %Schema{type: :string, description: "The account bio."},
+        avatar: %Schema{
+          type: :string,
+          description: "Avatar image encoded using multipart/form-data",
+          format: :binary
+        },
+        header: %Schema{
+          type: :string,
+          description: "Header image encoded using multipart/form-data",
+          format: :binary
+        },
+        locked: %Schema{
+          type: :boolean,
+          description: "Whether manual approval of follow requests is required."
+        },
+        fields_attributes: %Schema{
+          oneOf: [
+            %Schema{type: :array, items: attribute_field()},
+            %Schema{type: :object, additionalProperties: %Schema{type: attribute_field()}}
+          ]
+        },
+        # NOTE: `source` field is not supported
+        #
+        # source: %Schema{
+        #   type: :object,
+        #   properties: %{
+        #     privacy: %Schema{type: :string},
+        #     sensitive: %Schema{type: :boolean},
+        #     language: %Schema{type: :string}
+        #   }
+        # },
+
+        # Pleroma-specific fields
+        no_rich_text: %Schema{
+          type: :boolean,
+          description: "html tags are stripped from all statuses requested from the API"
+        },
+        hide_followers: %Schema{type: :boolean, description: "user's followers will be hidden"},
+        hide_follows: %Schema{type: :boolean, description: "user's follows will be hidden"},
+        hide_followers_count: %Schema{
+          type: :boolean,
+          description: "user's follower count will be hidden"
+        },
+        hide_follows_count: %Schema{
+          type: :boolean,
+          description: "user's follow count will be hidden"
+        },
+        hide_favorites: %Schema{
+          type: :boolean,
+          description: "user's favorites timeline will be hidden"
+        },
+        show_role: %Schema{
+          type: :boolean,
+          description: "user's role (e.g admin, moderator) will be exposed to anyone in the
+        API"
+        },
+        default_scope: VisibilityScope,
+        pleroma_settings_store: %Schema{
+          type: :object,
+          description: "Opaque user settings to be saved on the backend."
+        },
+        skip_thread_containment: %Schema{
+          type: :boolean,
+          description: "Skip filtering out broken threads"
+        },
+        allow_following_move: %Schema{
+          type: :boolean,
+          description: "Allows automatically follow moved following accounts"
+        },
+        pleroma_background_image: %Schema{
+          type: :string,
+          description: "Sets the background image of the user.",
+          format: :binary
+        },
+        discoverable: %Schema{
+          type: :boolean,
+          description:
+            "Discovery of this account in search results and other services is allowed."
+        },
+        actor_type: ActorType
+      },
+      example: %{
+        bot: false,
+        display_name: "cofe",
+        note: "foobar",
+        fields_attributes: [%{name: "foo", value: "bar"}],
+        no_rich_text: false,
+        hide_followers: true,
+        hide_follows: false,
+        hide_followers_count: false,
+        hide_follows_count: false,
+        hide_favorites: false,
+        show_role: false,
+        default_scope: "private",
+        pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}},
+        skip_thread_containment: false,
+        allow_following_move: false,
+        discoverable: false,
+        actor_type: "Person"
+      }
+    }
+  end
+
+  defp array_of_accounts do
+    %Schema{
+      title: "ArrayOfAccounts",
+      type: :array,
+      items: Account
+    }
+  end
+
+  defp array_of_relationships do
+    %Schema{
+      title: "ArrayOfRelationships",
+      description: "Response schema for account relationships",
+      type: :array,
+      items: AccountRelationship,
+      example: [
+        %{
+          "id" => "1",
+          "following" => true,
+          "showing_reblogs" => true,
+          "followed_by" => true,
+          "blocking" => false,
+          "blocked_by" => true,
+          "muting" => false,
+          "muting_notifications" => false,
+          "requested" => false,
+          "domain_blocking" => false,
+          "subscribing" => false,
+          "endorsed" => true
+        },
+        %{
+          "id" => "2",
+          "following" => true,
+          "showing_reblogs" => true,
+          "followed_by" => true,
+          "blocking" => false,
+          "blocked_by" => true,
+          "muting" => true,
+          "muting_notifications" => false,
+          "requested" => true,
+          "domain_blocking" => false,
+          "subscribing" => false,
+          "endorsed" => false
+        },
+        %{
+          "id" => "3",
+          "following" => true,
+          "showing_reblogs" => true,
+          "followed_by" => true,
+          "blocking" => true,
+          "blocked_by" => false,
+          "muting" => true,
+          "muting_notifications" => false,
+          "requested" => false,
+          "domain_blocking" => true,
+          "subscribing" => true,
+          "endorsed" => false
+        }
+      ]
+    }
+  end
+
+  defp follows_request do
+    %Schema{
+      title: "AccountFollowsRequest",
+      description: "POST body for muting an account",
+      type: :object,
+      properties: %{
+        uri: %Schema{type: :string, format: :uri}
+      },
+      required: [:uri]
+    }
+  end
+
+  defp mute_request do
+    %Schema{
+      title: "AccountMuteRequest",
+      description: "POST body for muting an account",
+      type: :object,
+      properties: %{
+        notifications: %Schema{
+          type: :boolean,
+          description: "Mute notifications in addition to statuses? Defaults to true.",
+          default: true
+        }
+      },
+      example: %{
+        "notifications" => true
+      }
+    }
+  end
+
+  defp list do
+    %Schema{
+      title: "List",
+      description: "Response schema for a list",
+      type: :object,
+      properties: %{
+        id: %Schema{type: :string},
+        title: %Schema{type: :string}
+      },
+      example: %{
+        "id" => "123",
+        "title" => "my list"
+      }
+    }
+  end
+
+  defp array_of_lists do
+    %Schema{
+      title: "ArrayOfLists",
+      description: "Response schema for lists",
+      type: :array,
+      items: list(),
+      example: [
+        %{"id" => "123", "title" => "my list"},
+        %{"id" => "1337", "title" => "anotehr list"}
+      ]
+    }
+  end
+
+  defp array_of_statuses do
+    %Schema{
+      title: "ArrayOfStatuses",
+      type: :array,
+      items: Status
+    }
+  end
+
+  defp attribute_field do
+    %Schema{
+      title: "AccountAttributeField",
+      description: "Request schema for account custom fields",
+      type: :object,
+      properties: %{
+        name: %Schema{type: :string},
+        value: %Schema{type: :string}
+      },
+      required: [:name, :value],
+      example: %{
+        "name" => "Website",
+        "value" => "https://pleroma.com"
+      }
+    }
+  end
 end
index a117fe460bc955d127ff5ec204167e0a2fd095f0..2f812ac77a710d0eb7e42414c7a431a2ffba5724 100644 (file)
@@ -5,7 +5,7 @@
 defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do
   alias OpenApiSpex.Operation
   alias OpenApiSpex.Schema
-  alias Pleroma.Web.ApiSpec.Schemas.CustomEmoji
+  alias Pleroma.Web.ApiSpec.Schemas.Emoji
 
   def open_api_operation(action) do
     operation = String.to_existing_atom("#{action}_operation")
@@ -19,17 +19,17 @@ defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do
       description: "Returns custom emojis that are available on the server.",
       operationId: "CustomEmojiController.index",
       responses: %{
-        200 => Operation.response("Custom Emojis", "application/json", custom_emojis_resposnse())
+        200 => Operation.response("Custom Emojis", "application/json", resposnse())
       }
     }
   end
 
-  defp custom_emojis_resposnse do
+  defp resposnse do
     %Schema{
       title: "CustomEmojisResponse",
       description: "Response schema for custom emojis",
       type: :array,
-      items: CustomEmoji,
+      items: custom_emoji(),
       example: [
         %{
           "category" => "Fun",
@@ -58,4 +58,31 @@ defmodule Pleroma.Web.ApiSpec.CustomEmojiOperation do
       ]
     }
   end
+
+  defp custom_emoji do
+    %Schema{
+      title: "CustomEmoji",
+      description: "Schema for a CustomEmoji",
+      allOf: [
+        Emoji,
+        %Schema{
+          type: :object,
+          properties: %{
+            category: %Schema{type: :string},
+            tags: %Schema{type: :array}
+          }
+        }
+      ],
+      example: %{
+        "category" => "Fun",
+        "shortcode" => "aaaa",
+        "url" =>
+          "https://files.mastodon.social/custom_emojis/images/000/007/118/original/aaaa.png",
+        "static_url" =>
+          "https://files.mastodon.social/custom_emojis/images/000/007/118/static/aaaa.png",
+        "visible_in_picker" => true,
+        "tags" => ["Gif", "Fun"]
+      }
+    }
+  end
 end
index d128feb30ac2b1d15edd53f1b17484d2665b5adf..d54e2158d7ac2618ede9c0905feadc91d76d9a20 100644 (file)
@@ -4,10 +4,10 @@
 
 defmodule Pleroma.Web.ApiSpec.Schemas.Account do
   alias OpenApiSpex.Schema
-  alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
   alias Pleroma.Web.ApiSpec.Schemas.AccountField
   alias Pleroma.Web.ApiSpec.Schemas.AccountRelationship
   alias Pleroma.Web.ApiSpec.Schemas.ActorType
+  alias Pleroma.Web.ApiSpec.Schemas.Emoji
   alias Pleroma.Web.ApiSpec.Schemas.FlakeID
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
 
@@ -24,7 +24,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Account do
       bot: %Schema{type: :boolean},
       created_at: %Schema{type: :string, format: "date-time"},
       display_name: %Schema{type: :string},
-      emojis: %Schema{type: :array, items: AccountEmoji},
+      emojis: %Schema{type: :array, items: Emoji},
       fields: %Schema{type: :array, items: AccountField},
       follow_requests_count: %Schema{type: :integer},
       followers_count: %Schema{type: :integer},
diff --git a/lib/pleroma/web/api_spec/schemas/account_create_request.ex b/lib/pleroma/web/api_spec/schemas/account_create_request.ex
deleted file mode 100644 (file)
index 49fa121..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-# 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.AccountCreateRequest do
-  alias OpenApiSpex.Schema
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountCreateRequest",
-    description: "POST body for creating an account",
-    type: :object,
-    properties: %{
-      reason: %Schema{
-        type: :string,
-        description:
-          "Text that will be reviewed by moderators if registrations require manual approval"
-      },
-      username: %Schema{type: :string, description: "The desired username for the account"},
-      email: %Schema{
-        type: :string,
-        description:
-          "The email address to be used for login. Required when `account_activation_required` is enabled.",
-        format: :email
-      },
-      password: %Schema{
-        type: :string,
-        description: "The password to be used for login",
-        format: :password
-      },
-      agreement: %Schema{
-        type: :boolean,
-        description:
-          "Whether the user agrees to the local rules, terms, and policies. These should be presented to the user in order to allow them to consent before setting this parameter to TRUE."
-      },
-      locale: %Schema{
-        type: :string,
-        description: "The language of the confirmation email that will be sent"
-      },
-      # Pleroma-specific properties:
-      fullname: %Schema{type: :string, description: "Full name"},
-      bio: %Schema{type: :string, description: "Bio", default: ""},
-      captcha_solution: %Schema{type: :string, description: "Provider-specific captcha solution"},
-      captcha_token: %Schema{type: :string, description: "Provider-specific captcha token"},
-      captcha_answer_data: %Schema{type: :string, description: "Provider-specific captcha data"},
-      token: %Schema{
-        type: :string,
-        description: "Invite token required when the registrations aren't public"
-      }
-    },
-    required: [:username, :password, :agreement],
-    example: %{
-      "username" => "cofe",
-      "email" => "cofe@example.com",
-      "password" => "secret",
-      "agreement" => "true",
-      "bio" => "☕️"
-    }
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_create_response.ex b/lib/pleroma/web/api_spec/schemas/account_create_response.ex
deleted file mode 100644 (file)
index 2237351..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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.AccountCreateResponse do
-  alias OpenApiSpex.Schema
-
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountCreateResponse",
-    description: "Response schema for an account",
-    type: :object,
-    properties: %{
-      token_type: %Schema{type: :string},
-      access_token: %Schema{type: :string},
-      scope: %Schema{type: :array, items: %Schema{type: :string}},
-      created_at: %Schema{type: :integer, format: :"date-time"}
-    },
-    example: %{
-      "access_token" => "i9hAVVzGld86Pl5JtLtizKoXVvtTlSCJvwaugCxvZzk",
-      "created_at" => 1_585_918_714,
-      "scope" => ["read", "write", "follow", "push"],
-      "token_type" => "Bearer"
-    }
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex b/lib/pleroma/web/api_spec/schemas/account_field_attribute.ex
deleted file mode 100644 (file)
index 89e4836..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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.AccountAttributeField do
-  alias OpenApiSpex.Schema
-
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountAttributeField",
-    description: "Request schema for account custom fields",
-    type: :object,
-    properties: %{
-      name: %Schema{type: :string},
-      value: %Schema{type: :string}
-    },
-    required: [:name, :value],
-    example: %{
-      "name" => "Website",
-      "value" => "https://pleroma.com"
-    }
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_follows_request.ex b/lib/pleroma/web/api_spec/schemas/account_follows_request.ex
deleted file mode 100644 (file)
index 19dce0c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.AccountFollowsRequest do
-  alias OpenApiSpex.Schema
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountFollowsRequest",
-    description: "POST body for muting an account",
-    type: :object,
-    properties: %{
-      uri: %Schema{type: :string, format: :uri}
-    },
-    required: [:uri]
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_mute_request.ex b/lib/pleroma/web/api_spec/schemas/account_mute_request.ex
deleted file mode 100644 (file)
index a61f6d0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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.AccountMuteRequest do
-  alias OpenApiSpex.Schema
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountMuteRequest",
-    description: "POST body for muting an account",
-    type: :object,
-    properties: %{
-      notifications: %Schema{
-        type: :boolean,
-        description: "Mute notifications in addition to statuses? Defaults to true.",
-        default: true
-      }
-    },
-    example: %{
-      "notifications" => true
-    }
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex b/lib/pleroma/web/api_spec/schemas/account_relationships_response.ex
deleted file mode 100644 (file)
index 960e14d..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# 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.AccountRelationshipsResponse do
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountRelationshipsResponse",
-    description: "Response schema for account relationships",
-    type: :array,
-    items: Pleroma.Web.ApiSpec.Schemas.AccountRelationship,
-    example: [
-      %{
-        "id" => "1",
-        "following" => true,
-        "showing_reblogs" => true,
-        "followed_by" => true,
-        "blocking" => false,
-        "blocked_by" => true,
-        "muting" => false,
-        "muting_notifications" => false,
-        "requested" => false,
-        "domain_blocking" => false,
-        "subscribing" => false,
-        "endorsed" => true
-      },
-      %{
-        "id" => "2",
-        "following" => true,
-        "showing_reblogs" => true,
-        "followed_by" => true,
-        "blocking" => false,
-        "blocked_by" => true,
-        "muting" => true,
-        "muting_notifications" => false,
-        "requested" => true,
-        "domain_blocking" => false,
-        "subscribing" => false,
-        "endorsed" => false
-      },
-      %{
-        "id" => "3",
-        "following" => true,
-        "showing_reblogs" => true,
-        "followed_by" => true,
-        "blocking" => true,
-        "blocked_by" => false,
-        "muting" => true,
-        "muting_notifications" => false,
-        "requested" => false,
-        "domain_blocking" => true,
-        "subscribing" => true,
-        "endorsed" => false
-      }
-    ]
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex b/lib/pleroma/web/api_spec/schemas/account_update_credentials_request.ex
deleted file mode 100644 (file)
index 35220c7..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-# 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.AccountUpdateCredentialsRequest do
-  alias OpenApiSpex.Schema
-  alias Pleroma.Web.ApiSpec.Schemas.AccountAttributeField
-  alias Pleroma.Web.ApiSpec.Schemas.ActorType
-  alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountUpdateCredentialsRequest",
-    description: "POST body for creating an account",
-    type: :object,
-    properties: %{
-      bot: %Schema{
-        type: :boolean,
-        description: "Whether the account has a bot flag."
-      },
-      display_name: %Schema{
-        type: :string,
-        description: "The display name to use for the profile."
-      },
-      note: %Schema{type: :string, description: "The account bio."},
-      avatar: %Schema{
-        type: :string,
-        description: "Avatar image encoded using multipart/form-data",
-        format: :binary
-      },
-      header: %Schema{
-        type: :string,
-        description: "Header image encoded using multipart/form-data",
-        format: :binary
-      },
-      locked: %Schema{
-        type: :boolean,
-        description: "Whether manual approval of follow requests is required."
-      },
-      fields_attributes: %Schema{
-        oneOf: [
-          %Schema{type: :array, items: AccountAttributeField},
-          %Schema{type: :object, additionalProperties: %Schema{type: AccountAttributeField}}
-        ]
-      },
-      # NOTE: `source` field is not supported
-      #
-      # source: %Schema{
-      #   type: :object,
-      #   properties: %{
-      #     privacy: %Schema{type: :string},
-      #     sensitive: %Schema{type: :boolean},
-      #     language: %Schema{type: :string}
-      #   }
-      # },
-
-      # Pleroma-specific fields
-      no_rich_text: %Schema{
-        type: :boolean,
-        description: "html tags are stripped from all statuses requested from the API"
-      },
-      hide_followers: %Schema{type: :boolean, description: "user's followers will be hidden"},
-      hide_follows: %Schema{type: :boolean, description: "user's follows will be hidden"},
-      hide_followers_count: %Schema{
-        type: :boolean,
-        description: "user's follower count will be hidden"
-      },
-      hide_follows_count: %Schema{
-        type: :boolean,
-        description: "user's follow count will be hidden"
-      },
-      hide_favorites: %Schema{
-        type: :boolean,
-        description: "user's favorites timeline will be hidden"
-      },
-      show_role: %Schema{
-        type: :boolean,
-        description: "user's role (e.g admin, moderator) will be exposed to anyone in the
-      API"
-      },
-      default_scope: VisibilityScope,
-      pleroma_settings_store: %Schema{
-        type: :object,
-        description: "Opaque user settings to be saved on the backend."
-      },
-      skip_thread_containment: %Schema{
-        type: :boolean,
-        description: "Skip filtering out broken threads"
-      },
-      allow_following_move: %Schema{
-        type: :boolean,
-        description: "Allows automatically follow moved following accounts"
-      },
-      pleroma_background_image: %Schema{
-        type: :string,
-        description: "Sets the background image of the user.",
-        format: :binary
-      },
-      discoverable: %Schema{
-        type: :boolean,
-        description: "Discovery of this account in search results and other services is allowed."
-      },
-      actor_type: ActorType
-    },
-    example: %{
-      bot: false,
-      display_name: "cofe",
-      note: "foobar",
-      fields_attributes: [%{name: "foo", value: "bar"}],
-      no_rich_text: false,
-      hide_followers: true,
-      hide_follows: false,
-      hide_followers_count: false,
-      hide_follows_count: false,
-      hide_favorites: false,
-      show_role: false,
-      default_scope: "private",
-      pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}},
-      skip_thread_containment: false,
-      allow_following_move: false,
-      discoverable: false,
-      actor_type: "Person"
-    }
-  })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/accounts_response.ex b/lib/pleroma/web/api_spec/schemas/accounts_response.ex
deleted file mode 100644 (file)
index b714f59..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# 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.AccountsResponse do
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "AccountsResponse",
-    type: :array,
-    items: Pleroma.Web.ApiSpec.Schemas.Account
-  })
-end
similarity index 52%
rename from lib/pleroma/web/api_spec/schemas/list.ex
rename to lib/pleroma/web/api_spec/schemas/api_error.ex
index f85fac2b854df866aa4900bed25caa4f53254661..5815df94c657c27c2e7e4a040f9faba53dc332ff 100644 (file)
@@ -2,22 +2,18 @@
 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.Web.ApiSpec.Schemas.List do
+defmodule Pleroma.Web.ApiSpec.Schemas.ApiError do
   alias OpenApiSpex.Schema
 
   require OpenApiSpex
 
   OpenApiSpex.schema(%{
-    title: "List",
-    description: "Response schema for a list",
+    title: "ApiError",
+    description: "Response schema for API error",
     type: :object,
-    properties: %{
-      id: %Schema{type: :string},
-      title: %Schema{type: :string}
-    },
+    properties: %{error: %Schema{type: :string}},
     example: %{
-      "id" => "123",
-      "title" => "my list"
+      "error" => "Something went wrong"
     }
   })
 end
diff --git a/lib/pleroma/web/api_spec/schemas/custom_emoji.ex b/lib/pleroma/web/api_spec/schemas/custom_emoji.ex
deleted file mode 100644 (file)
index 5531b20..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# 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.CustomEmoji do
-  alias OpenApiSpex.Schema
-
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "CustomEmoji",
-    description: "Response schema for an CustomEmoji",
-    type: :object,
-    properties: %{
-      shortcode: %Schema{type: :string},
-      url: %Schema{type: :string},
-      static_url: %Schema{type: :string},
-      visible_in_picker: %Schema{type: :boolean},
-      category: %Schema{type: :string},
-      tags: %Schema{type: :array}
-    },
-    example: %{
-      "shortcode" => "aaaa",
-      "url" => "https://files.mastodon.social/custom_emojis/images/000/007/118/original/aaaa.png",
-      "static_url" =>
-        "https://files.mastodon.social/custom_emojis/images/000/007/118/static/aaaa.png",
-      "visible_in_picker" => true
-    }
-  })
-end
similarity index 85%
rename from lib/pleroma/web/api_spec/schemas/account_emoji.ex
rename to lib/pleroma/web/api_spec/schemas/emoji.ex
index 6c1d4d95c5c6473653cf091b11cfaad2bb9ff54e..26f35e648809da88a35479389adad606387ac651 100644 (file)
@@ -2,14 +2,14 @@
 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
-defmodule Pleroma.Web.ApiSpec.Schemas.AccountEmoji do
+defmodule Pleroma.Web.ApiSpec.Schemas.Emoji do
   alias OpenApiSpex.Schema
 
   require OpenApiSpex
 
   OpenApiSpex.schema(%{
-    title: "AccountEmoji",
-    description: "Response schema for account custom fields",
+    title: "Emoji",
+    description: "Response schema for an emoji",
     type: :object,
     properties: %{
       shortcode: %Schema{type: :string},
diff --git a/lib/pleroma/web/api_spec/schemas/lists_response.ex b/lib/pleroma/web/api_spec/schemas/lists_response.ex
deleted file mode 100644 (file)
index 1324545..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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
index 5fc9e889f278898e73483fb0f119b07e1d686985..0474b550b8c2962633fb64b70ccc21a8f02c8ed2 100644 (file)
@@ -4,7 +4,7 @@
 
 defmodule Pleroma.Web.ApiSpec.Schemas.Poll do
   alias OpenApiSpex.Schema
-  alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
+  alias Pleroma.Web.ApiSpec.Schemas.Emoji
   alias Pleroma.Web.ApiSpec.Schemas.FlakeID
 
   require OpenApiSpex
@@ -20,7 +20,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do
       multiple: %Schema{type: :boolean},
       votes_count: %Schema{type: :integer},
       voted: %Schema{type: :boolean},
-      emojis: %Schema{type: :array, items: AccountEmoji},
+      emojis: %Schema{type: :array, items: Emoji},
       options: %Schema{
         type: :array,
         items: %Schema{
index bf5f046919a53de93b6ecd8065490a9666cc831e..aef0588d43d29965fe31b376c28a8d6843053e89 100644 (file)
@@ -5,7 +5,7 @@
 defmodule Pleroma.Web.ApiSpec.Schemas.Status do
   alias OpenApiSpex.Schema
   alias Pleroma.Web.ApiSpec.Schemas.Account
-  alias Pleroma.Web.ApiSpec.Schemas.AccountEmoji
+  alias Pleroma.Web.ApiSpec.Schemas.Emoji
   alias Pleroma.Web.ApiSpec.Schemas.FlakeID
   alias Pleroma.Web.ApiSpec.Schemas.Poll
   alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
@@ -41,7 +41,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
       },
       content: %Schema{type: :string, format: :html},
       created_at: %Schema{type: :string, format: "date-time"},
-      emojis: %Schema{type: :array, items: AccountEmoji},
+      emojis: %Schema{type: :array, items: Emoji},
       favourited: %Schema{type: :boolean},
       favourites_count: %Schema{type: :integer},
       id: FlakeID,
diff --git a/lib/pleroma/web/api_spec/schemas/statuses_response.ex b/lib/pleroma/web/api_spec/schemas/statuses_response.ex
deleted file mode 100644 (file)
index fb7c7e0..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# 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.StatusesResponse do
-  require OpenApiSpex
-
-  OpenApiSpex.schema(%{
-    title: "StatusesResponse",
-    type: :array,
-    items: Pleroma.Web.ApiSpec.Schemas.Status
-  })
-end
index b1513001ba0fd9482d37bcb66142db0de8510a08..37adeec5f0739a318fbecec2488763c7e42ccd44 100644 (file)
@@ -104,8 +104,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
         :fullname
       ])
       |> Map.put(:nickname, params.username)
-      |> Map.put(:fullname, params.fullname || params.username)
-      |> Map.put(:bio, params.bio || "")
+      |> Map.put(:fullname, Map.get(params, :fullname, params.username))
       |> Map.put(:confirm, params.password)
       |> Map.put(:trusted_app, app.trusted)
 
@@ -158,7 +157,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
 
     params =
       params
-      |> Map.from_struct()
       |> Enum.filter(fn {_, value} -> not is_nil(value) end)
       |> Enum.into(%{})
 
@@ -217,11 +215,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do
       Enum.map(fields, fn {_, v} -> v end)
     else
       Enum.map(fields, fn
-        %Pleroma.Web.ApiSpec.Schemas.AccountAttributeField{} = field ->
-          %{"name" => field.name, "value" => field.value}
-
-        field ->
-          field
+        %{} = field -> %{"name" => field.name, "value" => field.value}
+        field -> field
       end)
     end
   end
diff --git a/test/web/api_spec/account_operation_test.exs b/test/web/api_spec/account_operation_test.exs
deleted file mode 100644 (file)
index 892ade7..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-# 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.AccountOperationTest do
-  use Pleroma.Web.ConnCase
-
-  alias Pleroma.Web.ApiSpec
-  alias Pleroma.Web.ApiSpec.Schemas.Account
-  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest
-  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse
-  alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse
-  alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest
-
-  import OpenApiSpex.TestAssertions
-  import Pleroma.Factory
-
-  test "Account example matches schema" do
-    api_spec = ApiSpec.spec()
-    schema = Account.schema()
-    assert_schema(schema.example, "Account", api_spec)
-  end
-
-  test "AccountCreateRequest example matches schema" do
-    api_spec = ApiSpec.spec()
-    schema = AccountCreateRequest.schema()
-    assert_schema(schema.example, "AccountCreateRequest", api_spec)
-  end
-
-  test "AccountCreateResponse example matches schema" do
-    api_spec = ApiSpec.spec()
-    schema = AccountCreateResponse.schema()
-    assert_schema(schema.example, "AccountCreateResponse", api_spec)
-  end
-
-  test "AccountUpdateCredentialsRequest example matches schema" do
-    api_spec = ApiSpec.spec()
-    schema = AccountUpdateCredentialsRequest.schema()
-    assert_schema(schema.example, "AccountUpdateCredentialsRequest", api_spec)
-  end
-
-  test "AccountController produces a AccountCreateResponse", %{conn: conn} do
-    api_spec = ApiSpec.spec()
-    app_token = insert(:oauth_token, user: nil)
-
-    json =
-      conn
-      |> put_req_header("authorization", "Bearer " <> app_token.token)
-      |> put_req_header("content-type", "application/json")
-      |> post(
-        "/api/v1/accounts",
-        %{
-          username: "foo",
-          email: "bar@example.org",
-          password: "qwerty",
-          agreement: true
-        }
-      )
-      |> json_response(200)
-
-    assert_schema(json, "AccountCreateResponse", api_spec)
-  end
-
-  test "AccountUpdateCredentialsRequest produces an Account", %{conn: conn} do
-    api_spec = ApiSpec.spec()
-    token = insert(:oauth_token, scopes: ["read", "write"])
-
-    json =
-      conn
-      |> put_req_header("authorization", "Bearer " <> token.token)
-      |> put_req_header("content-type", "application/json")
-      |> patch(
-        "/api/v1/accounts/update_credentials",
-        %{
-          hide_followers_count: "true",
-          hide_follows_count: "true",
-          skip_thread_containment: "true",
-          hide_follows: "true",
-          pleroma_settings_store: %{"pleroma-fe" => %{"key" => "val"}},
-          note: "foobar",
-          fields_attributes: [%{name: "foo", value: "bar"}]
-        }
-      )
-      |> json_response(200)
-
-    assert_schema(json, "Account", api_spec)
-  end
-
-  test "AccountRelationshipsResponse example matches schema" do
-    api_spec = ApiSpec.spec()
-    schema = AccountRelationshipsResponse.schema()
-    assert_schema(schema.example, "AccountRelationshipsResponse", api_spec)
-  end
-
-  test "/api/v1/accounts/relationships produces AccountRelationshipsResponse", %{
-    conn: conn
-  } do
-    token = insert(:oauth_token, scopes: ["read", "write"])
-    other_user = insert(:user)
-    {:ok, _user} = Pleroma.User.follow(token.user, other_user)
-    api_spec = ApiSpec.spec()
-
-    assert [relationship] =
-             conn
-             |> put_req_header("authorization", "Bearer " <> token.token)
-             |> get("/api/v1/accounts/relationships?id=#{other_user.id}")
-             |> json_response(:ok)
-
-    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
-
-  test "/api/v1/accounts/:id/statuses produces StatusesResponse", %{
-    conn: conn
-  } do
-    user = insert(:user)
-    Pleroma.Web.CommonAPI.post(user, %{"status" => "foobar"})
-
-    api_spec = ApiSpec.spec()
-
-    assert resp =
-             conn
-             |> get("/api/v1/accounts/#{user.id}/statuses")
-             |> json_response(:ok)
-
-    assert_schema(resp, "StatusesResponse", api_spec)
-  end
-end
index 4222556a422c3d14272fd1dc0450119b7d442ce8..ab0027f9027dc6f6bdce76c2d826741f2d51b11c 100644 (file)
@@ -4,8 +4,6 @@
 
 defmodule Pleroma.Web.MastodonAPI.CustomEmojiControllerTest do
   use Pleroma.Web.ConnCase, async: true
-  alias Pleroma.Web.ApiSpec
-  import OpenApiSpex.TestAssertions
 
   test "with tags", %{conn: conn} do
     assert resp =
@@ -21,6 +19,5 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiControllerTest do
     assert Map.has_key?(emoji, "category")
     assert Map.has_key?(emoji, "url")
     assert Map.has_key?(emoji, "visible_in_picker")
-    assert_schema(emoji, "CustomEmoji", ApiSpec.spec())
   end
 end