summaryrefslogtreecommitdiff
path: root/test/web/api_spec/account_operation_test.exs
blob: 37501b8cc71284a1b028cff4d234e62ecf3843ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 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, async: true

  alias Pleroma.Web.ApiSpec
  alias Pleroma.Web.ApiSpec.Schemas.Account
  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest
  alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse

  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 "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
end