diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs | 147 | 
1 files changed, 141 insertions, 6 deletions
| diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs index 77c75b560..6af68cb52 100644 --- a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs +++ b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs @@ -17,23 +17,101 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do      user = insert(:user)      other_user = insert(:user) +    note = insert(:note, user: user, data: %{"reactions" => [["👍", [other_user.ap_id], nil]]}) +    activity = insert(:note_activity, note: note, user: user) + +    result = +      conn +      |> assign(:user, other_user) +      |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) +      |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/\u26A0") +      |> json_response_and_validate_schema(200) + +    assert %{"id" => id} = result +    assert to_string(activity.id) == id + +    assert result["pleroma"]["emoji_reactions"] == [ +             %{ +               "name" => "👍", +               "count" => 1, +               "me" => true, +               "url" => nil, +               "account_ids" => [other_user.id] +             }, +             %{ +               "name" => "\u26A0\uFE0F", +               "count" => 1, +               "me" => true, +               "url" => nil, +               "account_ids" => [other_user.id] +             } +           ] +      {:ok, activity} = CommonAPI.post(user, %{status: "#cofe"}) +    ObanHelpers.perform_all() + +    # Reacting with a custom emoji      result =        conn        |> assign(:user, other_user)        |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) -      |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/☕") +      |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:dinosaur:")        |> json_response_and_validate_schema(200) -    # We return the status, but this our implementation detail.      assert %{"id" => id} = result      assert to_string(activity.id) == id      assert result["pleroma"]["emoji_reactions"] == [ -             %{"name" => "☕", "count" => 1, "me" => true} +             %{ +               "name" => "dinosaur", +               "count" => 1, +               "me" => true, +               "url" => "http://localhost:4001/emoji/dino walking.gif", +               "account_ids" => [other_user.id] +             } +           ] + +    # Reacting with a remote emoji +    note = +      insert(:note, +        user: user, +        data: %{"reactions" => [["wow", [other_user.ap_id], "https://remote/emoji/wow"]]} +      ) + +    activity = insert(:note_activity, note: note, user: user) + +    result = +      conn +      |> assign(:user, user) +      |> assign(:token, insert(:oauth_token, user: user, scopes: ["write:statuses"])) +      |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") +      |> json_response(200) + +    assert result["pleroma"]["emoji_reactions"] == [ +             %{ +               "name" => "wow@remote", +               "count" => 2, +               "me" => true, +               "url" => "https://remote/emoji/wow", +               "account_ids" => [user.id, other_user.id] +             }             ] +    # Reacting with a remote custom emoji that hasn't been reacted with yet +    note = +      insert(:note, +        user: user +      ) + +    activity = insert(:note_activity, note: note, user: user) + +    assert conn +           |> assign(:user, user) +           |> assign(:token, insert(:oauth_token, user: user, scopes: ["write:statuses"])) +           |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") +           |> json_response(400) +      # Reacting with a non-emoji      assert conn             |> assign(:user, other_user) @@ -46,8 +124,21 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do      user = insert(:user)      other_user = insert(:user) -    {:ok, activity} = CommonAPI.post(user, %{status: "#cofe"}) +    note = +      insert(:note, +        user: user, +        data: %{"reactions" => [["wow", [user.ap_id], "https://remote/emoji/wow"]]} +      ) + +    activity = insert(:note_activity, note: note, user: user) + +    ObanHelpers.perform_all() +      {:ok, _reaction_activity} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") +    {:ok, _reaction_activity} = CommonAPI.react_with_emoji(activity.id, other_user, ":dinosaur:") + +    {:ok, _reaction_activity} = +      CommonAPI.react_with_emoji(activity.id, other_user, ":wow@remote:")      ObanHelpers.perform_all() @@ -60,11 +151,47 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do      assert %{"id" => id} = json_response_and_validate_schema(result, 200)      assert to_string(activity.id) == id +    # Remove custom emoji + +    result = +      conn +      |> assign(:user, other_user) +      |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) +      |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:dinosaur:") + +    assert %{"id" => id} = json_response_and_validate_schema(result, 200) +    assert to_string(activity.id) == id +      ObanHelpers.perform_all()      object = Object.get_by_ap_id(activity.data["object"]) -    assert object.data["reaction_count"] == 0 +    assert object.data["reaction_count"] == 2 + +    # Remove custom remote emoji +    result = +      conn +      |> assign(:user, other_user) +      |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) +      |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") +      |> json_response(200) + +    assert result["pleroma"]["emoji_reactions"] == [ +             %{ +               "name" => "wow@remote", +               "count" => 1, +               "me" => false, +               "url" => "https://remote/emoji/wow", +               "account_ids" => [user.id] +             } +           ] + +    # Remove custom remote emoji that hasn't been reacted with yet +    assert conn +           |> assign(:user, other_user) +           |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) +           |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:zoop@remote:") +           |> json_response(400)    end    test "GET /api/v1/pleroma/statuses/:id/reactions", %{conn: conn} do @@ -181,7 +308,15 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do      {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅")      {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") -    assert [%{"name" => "🎅", "count" => 1, "accounts" => [represented_user], "me" => false}] = +    assert [ +             %{ +               "name" => "🎅", +               "count" => 1, +               "accounts" => [represented_user], +               "me" => false, +               "url" => nil +             } +           ] =               conn               |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions/🎅")               |> json_response_and_validate_schema(200) | 
