diff options
| author | Maksim Pechnikov <parallel588@gmail.com> | 2020-02-03 21:42:36 +0300 | 
|---|---|---|
| committer | Maksim Pechnikov <parallel588@gmail.com> | 2020-02-03 21:42:36 +0300 | 
| commit | 2c40c8b4a2890e60abe8d67a3c8af4a88d225b60 (patch) | |
| tree | be7ff77c4af8b1264c57e8aa8161e80396ca3fbc /test/web | |
| parent | 21a2a054070c26d7be1a0e453e5f40b20fbd59f2 (diff) | |
| parent | c27d1d65bfd60effdb45359697141c136e156177 (diff) | |
| download | pleroma-2c40c8b4a2890e60abe8d67a3c8af4a88d225b60.tar.gz pleroma-2c40c8b4a2890e60abe8d67a3c8af4a88d225b60.zip | |
Merge branch 'develop' into issue/1383
Diffstat (limited to 'test/web')
8 files changed, 133 insertions, 38 deletions
| diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 5da358c43..0829a6ec2 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -395,6 +395,25 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["content"] == "👌"      end +    test "it reject invalid emoji reactions" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) + +      data = +        File.read!("test/fixtures/emoji-reaction-too-long.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]) + +      assert :error = Transmogrifier.handle_incoming(data) + +      data = +        File.read!("test/fixtures/emoji-reaction-no-emoji.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]) + +      assert :error = Transmogrifier.handle_incoming(data) +    end +      test "it works for incoming emoji reaction undos" do        user = insert(:user) diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index f8963e42e..8fa0c6faa 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -238,7 +238,9 @@ defmodule Pleroma.Web.CommonAPITest do        assert reaction.data["actor"] == user.ap_id        assert reaction.data["content"] == "👍" -      # TODO: test error case. +      {:ok, activity} = CommonAPI.post(other_user, %{"status" => "cofe"}) + +      {:error, _} = CommonAPI.react_with_emoji(activity.id, user, ".")      end      test "unreacting to a status with an emoji" do diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 0d4860a42..ec1e18002 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -668,6 +668,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do      end      test "rate limit", %{conn: conn} do +      Pleroma.Config.put([Pleroma.Plugs.RemoteIp, :enabled], true)        app_token = insert(:oauth_token, user: nil)        conn = diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index 25777b011..fc110417c 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -37,8 +37,15 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      status = StatusView.render("show.json", activity: activity)      assert status[:pleroma][:emoji_reactions] == [ -             %{emoji: "☕", count: 2}, -             %{emoji: "🍵", count: 1} +             %{emoji: "☕", count: 2, reacted: false}, +             %{emoji: "🍵", count: 1, reacted: false} +           ] + +    status = StatusView.render("show.json", activity: activity, for: user) + +    assert status[:pleroma][:emoji_reactions] == [ +             %{emoji: "☕", count: 2, reacted: true}, +             %{emoji: "🍵", count: 1, reacted: false}             ]    end diff --git a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs index 8e76f2f3d..6f1ea78ec 100644 --- a/test/web/pleroma_api/controllers/emoji_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_api_controller_test.exs @@ -6,7 +6,6 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do    use Pleroma.Web.ConnCase    import Tesla.Mock -    import Pleroma.Factory    @emoji_dir_path Path.join( diff --git a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs index 3978c2ec5..be5007de5 100644 --- a/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs +++ b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs @@ -25,9 +25,14 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do        |> assign(:user, other_user)        |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"]))        |> post("/api/v1/pleroma/statuses/#{activity.id}/react_with_emoji", %{"emoji" => "☕"}) +      |> json_response(200) -    assert %{"id" => id} = json_response(result, 200) +    assert %{"id" => id} = result      assert to_string(activity.id) == id + +    assert result["pleroma"]["emoji_reactions"] == [ +             %{"emoji" => "☕", "count" => 1, "reacted" => true} +           ]    end    test "POST /api/v1/pleroma/statuses/:id/unreact_with_emoji", %{conn: conn} do @@ -54,6 +59,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do    test "GET /api/v1/pleroma/statuses/:id/emoji_reactions_by", %{conn: conn} do      user = insert(:user)      other_user = insert(:user) +    doomed_user = insert(:user)      {:ok, activity} = CommonAPI.post(user, %{"status" => "#cofe"}) @@ -65,14 +71,29 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do      assert result == []      {:ok, _, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅") +    {:ok, _, _} = CommonAPI.react_with_emoji(activity.id, doomed_user, "🎅") + +    User.perform(:delete, doomed_user)      result =        conn        |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by")        |> json_response(200) -    [%{"emoji" => "🎅", "count" => 1, "accounts" => [represented_user]}] = result +    [%{"emoji" => "🎅", "count" => 1, "accounts" => [represented_user], "reacted" => false}] = +      result +      assert represented_user["id"] == other_user.id + +    result = +      conn +      |> assign(:user, other_user) +      |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["read:statuses"])) +      |> get("/api/v1/pleroma/statuses/#{activity.id}/emoji_reactions_by") +      |> json_response(200) + +    assert [%{"emoji" => "🎅", "count" => 1, "accounts" => [_represented_user], "reacted" => true}] = +             result    end    test "/api/v1/pleroma/conversations/:id" do diff --git a/test/web/rich_media/parsers/twitter_card_test.exs b/test/web/rich_media/parsers/twitter_card_test.exs index e2610f4c2..751ca614c 100644 --- a/test/web/rich_media/parsers/twitter_card_test.exs +++ b/test/web/rich_media/parsers/twitter_card_test.exs @@ -85,4 +85,19 @@ defmodule Pleroma.Web.RichMedia.Parsers.TwitterCardTest do                  image: image_path                }}    end + +  test "takes first founded title in html head if there is html markup error" do +    html = File.read!("test/fixtures/nypd-facial-recognition-children-teenagers4.html") + +    assert TwitterCard.parse(html, %{}) == +             {:ok, +              %{ +                site: nil, +                title: +                  "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database. - The New York Times", +                "app:id:googleplay": "com.nytimes.android", +                "app:name:googleplay": "NYTimes", +                "app:url:googleplay": "nytimes://reader/id/100000006583622" +              }} +  end  end diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index 7166d6f0b..2a7550551 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -65,6 +65,9 @@ defmodule Pleroma.Web.StreamerTest do        blocked = insert(:user)        {:ok, _user_relationship} = User.block(user, blocked) +      {:ok, activity} = CommonAPI.post(user, %{"status" => ":("}) +      {:ok, notif, _} = CommonAPI.favorite(activity.id, blocked) +        task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)        Streamer.add_socket( @@ -72,9 +75,6 @@ defmodule Pleroma.Web.StreamerTest do          %{transport_pid: task.pid, assigns: %{user: user}}        ) -      {:ok, activity} = CommonAPI.post(user, %{"status" => ":("}) -      {:ok, notif, _} = CommonAPI.favorite(activity.id, blocked) -        Streamer.stream("user:notification", notif)        Task.await(task)      end @@ -83,6 +83,11 @@ defmodule Pleroma.Web.StreamerTest do        user: user      } do        user2 = insert(:user) + +      {:ok, activity} = CommonAPI.post(user, %{"status" => "super hot take"}) +      {:ok, activity} = CommonAPI.add_mute(user, activity) +      {:ok, notif, _} = CommonAPI.favorite(activity.id, user2) +        task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)        Streamer.add_socket( @@ -90,9 +95,6 @@ defmodule Pleroma.Web.StreamerTest do          %{transport_pid: task.pid, assigns: %{user: user}}        ) -      {:ok, activity} = CommonAPI.post(user, %{"status" => "super hot take"}) -      {:ok, activity} = CommonAPI.add_mute(user, activity) -      {:ok, notif, _} = CommonAPI.favorite(activity.id, user2)        Streamer.stream("user:notification", notif)        Task.await(task)      end @@ -101,6 +103,11 @@ defmodule Pleroma.Web.StreamerTest do        user: user      } do        user2 = insert(:user, %{ap_id: "https://hecking-lewd-place.com/user/meanie"}) + +      {:ok, user} = User.block_domain(user, "hecking-lewd-place.com") +      {:ok, activity} = CommonAPI.post(user, %{"status" => "super hot take"}) +      {:ok, notif, _} = CommonAPI.favorite(activity.id, user2) +        task = Task.async(fn -> refute_receive {:text, _}, @streamer_timeout end)        Streamer.add_socket( @@ -108,10 +115,6 @@ defmodule Pleroma.Web.StreamerTest do          %{transport_pid: task.pid, assigns: %{user: user}}        ) -      {:ok, user} = User.block_domain(user, "hecking-lewd-place.com") -      {:ok, activity} = CommonAPI.post(user, %{"status" => "super hot take"}) -      {:ok, notif, _} = CommonAPI.favorite(activity.id, user2) -        Streamer.stream("user:notification", notif)        Task.await(task)      end @@ -267,6 +270,8 @@ defmodule Pleroma.Web.StreamerTest do        blocked_user = insert(:user)        {:ok, _user_relationship} = User.block(user, blocked_user) +      {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"}) +        task =          Task.async(fn ->            refute_receive {:text, _}, 1_000 @@ -277,8 +282,6 @@ defmodule Pleroma.Web.StreamerTest do          user: user        } -      {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"}) -        topics = %{          "public" => [fake_socket]        } @@ -335,6 +338,12 @@ defmodule Pleroma.Web.StreamerTest do      {:ok, list} = List.create("Test", user_a)      {:ok, list} = List.follow(list, user_b) +    {:ok, activity} = +      CommonAPI.post(user_b, %{ +        "status" => "@#{user_c.nickname} Test", +        "visibility" => "direct" +      }) +      task =        Task.async(fn ->          refute_receive {:text, _}, 1_000 @@ -345,12 +354,6 @@ defmodule Pleroma.Web.StreamerTest do        user: user_a      } -    {:ok, activity} = -      CommonAPI.post(user_b, %{ -        "status" => "@#{user_c.nickname} Test", -        "visibility" => "direct" -      }) -      topics = %{        "list:#{list.id}" => [fake_socket]      } @@ -367,6 +370,12 @@ defmodule Pleroma.Web.StreamerTest do      {:ok, list} = List.create("Test", user_a)      {:ok, list} = List.follow(list, user_b) +    {:ok, activity} = +      CommonAPI.post(user_b, %{ +        "status" => "Test", +        "visibility" => "private" +      }) +      task =        Task.async(fn ->          refute_receive {:text, _}, 1_000 @@ -377,12 +386,6 @@ defmodule Pleroma.Web.StreamerTest do        user: user_a      } -    {:ok, activity} = -      CommonAPI.post(user_b, %{ -        "status" => "Test", -        "visibility" => "private" -      }) -      topics = %{        "list:#{list.id}" => [fake_socket]      } @@ -401,6 +404,12 @@ defmodule Pleroma.Web.StreamerTest do      {:ok, list} = List.create("Test", user_a)      {:ok, list} = List.follow(list, user_b) +    {:ok, activity} = +      CommonAPI.post(user_b, %{ +        "status" => "Test", +        "visibility" => "private" +      }) +      task =        Task.async(fn ->          assert_receive {:text, _}, 1_000 @@ -411,12 +420,6 @@ defmodule Pleroma.Web.StreamerTest do        user: user_a      } -    {:ok, activity} = -      CommonAPI.post(user_b, %{ -        "status" => "Test", -        "visibility" => "private" -      }) -      Streamer.add_socket(        "list:#{list.id}",        fake_socket @@ -433,6 +436,9 @@ defmodule Pleroma.Web.StreamerTest do      user3 = insert(:user)      CommonAPI.hide_reblogs(user1, user2) +    {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"}) +    {:ok, announce_activity, _} = CommonAPI.repeat(create_activity.id, user2) +      task =        Task.async(fn ->          refute_receive {:text, _}, 1_000 @@ -443,14 +449,39 @@ defmodule Pleroma.Web.StreamerTest do        user: user1      } +    topics = %{ +      "public" => [fake_socket] +    } + +    Worker.push_to_socket(topics, "public", announce_activity) + +    Task.await(task) +  end + +  test "it does send non-reblog notification for reblog-muted actors" do +    user1 = insert(:user) +    user2 = insert(:user) +    user3 = insert(:user) +    CommonAPI.hide_reblogs(user1, user2) +      {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"}) -    {:ok, announce_activity, _} = CommonAPI.repeat(create_activity.id, user2) +    {:ok, favorite_activity, _} = CommonAPI.favorite(create_activity.id, user2) + +    task = +      Task.async(fn -> +        assert_receive {:text, _}, 1_000 +      end) + +    fake_socket = %StreamerSocket{ +      transport_pid: task.pid, +      user: user1 +    }      topics = %{        "public" => [fake_socket]      } -    Worker.push_to_socket(topics, "public", announce_activity) +    Worker.push_to_socket(topics, "public", favorite_activity)      Task.await(task)    end | 
