diff options
| author | Egor Kislitsyn <egor@kislitsyn.com> | 2019-09-30 16:52:07 +0700 | 
|---|---|---|
| committer | Egor Kislitsyn <egor@kislitsyn.com> | 2019-09-30 16:52:07 +0700 | 
| commit | d4d88b3361ea57d763c5093470b7ebaee6bcf11c (patch) | |
| tree | 3cf9d785df26ba0c00945016e902ccfefd71e355 /test/web/mastodon_api | |
| parent | 90537f398160eddfb8033c1cdfe1acc21ee63c4a (diff) | |
| download | pleroma-d4d88b3361ea57d763c5093470b7ebaee6bcf11c.tar.gz pleroma-d4d88b3361ea57d763c5093470b7ebaee6bcf11c.zip | |
Extract conversation actions from `MastodonAPIController` to ConversationController
Diffstat (limited to 'test/web/mastodon_api')
| -rw-r--r-- | test/web/mastodon_api/controllers/conversation_controller_test.exs | 75 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 63 | 
2 files changed, 75 insertions, 63 deletions
| diff --git a/test/web/mastodon_api/controllers/conversation_controller_test.exs b/test/web/mastodon_api/controllers/conversation_controller_test.exs new file mode 100644 index 000000000..7117fc76a --- /dev/null +++ b/test/web/mastodon_api/controllers/conversation_controller_test.exs @@ -0,0 +1,75 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.ConversationControllerTest do +  use Pleroma.Web.ConnCase + +  alias Pleroma.User +  alias Pleroma.Web.CommonAPI + +  import Pleroma.Factory + +  test "Conversations", %{conn: conn} do +    user_one = insert(:user) +    user_two = insert(:user) +    user_three = insert(:user) + +    {:ok, user_two} = User.follow(user_two, user_one) + +    {:ok, direct} = +      CommonAPI.post(user_one, %{ +        "status" => "Hi @#{user_two.nickname}, @#{user_three.nickname}!", +        "visibility" => "direct" +      }) + +    {:ok, _follower_only} = +      CommonAPI.post(user_one, %{ +        "status" => "Hi @#{user_two.nickname}!", +        "visibility" => "private" +      }) + +    res_conn = +      conn +      |> assign(:user, user_one) +      |> get("/api/v1/conversations") + +    assert response = json_response(res_conn, 200) + +    assert [ +             %{ +               "id" => res_id, +               "accounts" => res_accounts, +               "last_status" => res_last_status, +               "unread" => unread +             } +           ] = response + +    account_ids = Enum.map(res_accounts, & &1["id"]) +    assert length(res_accounts) == 2 +    assert user_two.id in account_ids +    assert user_three.id in account_ids +    assert is_binary(res_id) +    assert unread == true +    assert res_last_status["id"] == direct.id + +    # Apparently undocumented API endpoint +    res_conn = +      conn +      |> assign(:user, user_one) +      |> post("/api/v1/conversations/#{res_id}/read") + +    assert response = json_response(res_conn, 200) +    assert length(response["accounts"]) == 2 +    assert response["last_status"]["id"] == direct.id +    assert response["unread"] == false + +    # (vanilla) Mastodon frontend behaviour +    res_conn = +      conn +      |> assign(:user, user_one) +      |> get("/api/v1/statuses/#{res_last_status["id"]}/context") + +    assert %{"ancestors" => [], "descendants" => []} == json_response(res_conn, 200) +  end +end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index b3acb7a22..8080d3941 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -33,69 +33,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    clear_config([:instance, :public])    clear_config([:rich_media, :enabled]) -  test "Conversations", %{conn: conn} do -    user_one = insert(:user) -    user_two = insert(:user) -    user_three = insert(:user) - -    {:ok, user_two} = User.follow(user_two, user_one) - -    {:ok, direct} = -      CommonAPI.post(user_one, %{ -        "status" => "Hi @#{user_two.nickname}, @#{user_three.nickname}!", -        "visibility" => "direct" -      }) - -    {:ok, _follower_only} = -      CommonAPI.post(user_one, %{ -        "status" => "Hi @#{user_two.nickname}!", -        "visibility" => "private" -      }) - -    res_conn = -      conn -      |> assign(:user, user_one) -      |> get("/api/v1/conversations") - -    assert response = json_response(res_conn, 200) - -    assert [ -             %{ -               "id" => res_id, -               "accounts" => res_accounts, -               "last_status" => res_last_status, -               "unread" => unread -             } -           ] = response - -    account_ids = Enum.map(res_accounts, & &1["id"]) -    assert length(res_accounts) == 2 -    assert user_two.id in account_ids -    assert user_three.id in account_ids -    assert is_binary(res_id) -    assert unread == true -    assert res_last_status["id"] == direct.id - -    # Apparently undocumented API endpoint -    res_conn = -      conn -      |> assign(:user, user_one) -      |> post("/api/v1/conversations/#{res_id}/read") - -    assert response = json_response(res_conn, 200) -    assert length(response["accounts"]) == 2 -    assert response["last_status"]["id"] == direct.id -    assert response["unread"] == false - -    # (vanilla) Mastodon frontend behaviour -    res_conn = -      conn -      |> assign(:user, user_one) -      |> get("/api/v1/statuses/#{res_last_status["id"]}/context") - -    assert %{"ancestors" => [], "descendants" => []} == json_response(res_conn, 200) -  end -    test "verify_credentials", %{conn: conn} do      user = insert(:user) | 
