diff options
| -rw-r--r-- | lib/pleroma/web/router.ex | 3 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 51 | 
2 files changed, 54 insertions, 0 deletions
| diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index f4418cec0..64e1a2bd8 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -245,6 +245,9 @@ defmodule Pleroma.Web.Router do        get("/suggestions", MastodonAPIController, :suggestions) +      get("/conversations", MastodonAPIController, :conversations) +      get("/conversations/:id/read", MastodonAPIController, :get_conversation) +        get("/endorsements", MastodonAPIController, :empty_array)        get("/pleroma/flavour", MastodonAPIController, :get_flavour) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index d9bcbf5a9..5e6ee0024 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -250,6 +250,57 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do      assert status["url"] != direct.data["id"]    end +  test "Conversations", %{conn: conn} do +    user_one = insert(:user) +    user_two = insert(:user) + +    {:ok, user_two} = User.follow(user_two, user_one) + +    {:ok, direct} = +      CommonAPI.post(user_one, %{ +        "status" => "Hi @#{user_two.nickname}!", +        "visibility" => "direct" +      }) + +    {:ok, _follower_only} = +      CommonAPI.post(user_one, %{ +        "status" => "Hi @#{user_two.nickname}!", +        "visibility" => "private" +      }) + +    res_conn = +      conn +      |> assign(:user, user) +      |> 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 +           } = reponse + +    assert unread == false + +    # Apparently undocumented API endpoint +    res_conn = +      conn +      |> assign(:user, user) +      |> get("/api/v1/conversations/#{res_id}/read") + +    assert response == json_response(res_conn, 200) + +    # (vanilla) Mastodon frontend behaviour +    res_conn = +      conn +      |> assign(:user, user) +      |> get("/api/v1/statuses/#{res_last_status.id}/context") + +    assert %{ancestors: [], descendants: []} == json_response(res_conn, 200) +  end +    test "doesn't include DMs from blocked users", %{conn: conn} do      blocker = insert(:user)      blocked = insert(:user) | 
