diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/list_test.exs | 26 | ||||
| -rw-r--r-- | test/signature_test.exs | 99 | ||||
| -rw-r--r-- | test/tasks/config_test.exs | 12 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 15 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 12 | ||||
| -rw-r--r-- | test/web/activity_pub/visibilty_test.exs | 70 | ||||
| -rw-r--r-- | test/web/admin_api/admin_api_controller_test.exs | 47 | ||||
| -rw-r--r-- | test/web/common_api/common_api_test.exs | 12 | ||||
| -rw-r--r-- | test/web/mastodon_api/status_view_test.exs | 13 | 
9 files changed, 290 insertions, 16 deletions
| diff --git a/test/list_test.exs b/test/list_test.exs index 1909c0cd9..f39033d02 100644 --- a/test/list_test.exs +++ b/test/list_test.exs @@ -113,4 +113,30 @@ defmodule Pleroma.ListTest do      assert owned_list in lists_2      refute not_owned_list in lists_2    end + +  test "get by ap_id" do +    user = insert(:user) +    {:ok, list} = Pleroma.List.create("foo", user) +    assert Pleroma.List.get_by_ap_id(list.ap_id) == list +  end + +  test "memberships" do +    user = insert(:user) +    member = insert(:user) +    {:ok, list} = Pleroma.List.create("foo", user) +    {:ok, list} = Pleroma.List.follow(list, member) + +    assert Pleroma.List.memberships(member) == [list.ap_id] +  end + +  test "member?" do +    user = insert(:user) +    member = insert(:user) + +    {:ok, list} = Pleroma.List.create("foo", user) +    {:ok, list} = Pleroma.List.follow(list, member) + +    assert Pleroma.List.member?(list, member) +    refute Pleroma.List.member?(list, user) +  end  end diff --git a/test/signature_test.exs b/test/signature_test.exs new file mode 100644 index 000000000..4920196c7 --- /dev/null +++ b/test/signature_test.exs @@ -0,0 +1,99 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.SignatureTest do +  use Pleroma.DataCase + +  import Pleroma.Factory +  import Tesla.Mock + +  alias Pleroma.Signature + +  setup do +    mock(fn env -> apply(HttpRequestMock, :request, [env]) end) +    :ok +  end + +  @private_key "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA48qb4v6kqigZutO9Ot0wkp27GIF2LiVaADgxQORZozZR63jH\nTaoOrS3Xhngbgc8SSOhfXET3omzeCLqaLNfXnZ8OXmuhJfJSU6mPUvmZ9QdT332j\nfN/g3iWGhYMf/M9ftCKh96nvFVO/tMruzS9xx7tkrfJjehdxh/3LlJMMImPtwcD7\nkFXwyt1qZTAU6Si4oQAJxRDQXHp1ttLl3Ob829VM7IKkrVmY8TD+JSlV0jtVJPj6\n1J19ytKTx/7UaucYvb9HIiBpkuiy5n/irDqKLVf5QEdZoNCdojOZlKJmTLqHhzKP\n3E9TxsUjhrf4/EqegNc/j982RvOxeu4i40zMQwIDAQABAoIBAQDH5DXjfh21i7b4\ncXJuw0cqget617CDUhemdakTDs9yH+rHPZd3mbGDWuT0hVVuFe4vuGpmJ8c+61X0\nRvugOlBlavxK8xvYlsqTzAmPgKUPljyNtEzQ+gz0I+3mH2jkin2rL3D+SksZZgKm\nfiYMPIQWB2WUF04gB46DDb2mRVuymGHyBOQjIx3WC0KW2mzfoFUFRlZEF+Nt8Ilw\nT+g/u0aZ1IWoszbsVFOEdghgZET0HEarum0B2Je/ozcPYtwmU10iBANGMKdLqaP/\nj954BPunrUf6gmlnLZKIKklJj0advx0NA+cL79+zeVB3zexRYSA5o9q0WPhiuTwR\n/aedWHnBAoGBAP0sDWBAM1Y4TRAf8ZI9PcztwLyHPzfEIqzbObJJnx1icUMt7BWi\n+/RMOnhrlPGE1kMhOqSxvXYN3u+eSmWTqai2sSH5Hdw2EqnrISSTnwNUPINX7fHH\njEkgmXQ6ixE48SuBZnb4w1EjdB/BA6/sjL+FNhggOc87tizLTkMXmMtTAoGBAOZV\n+wPuAMBDBXmbmxCuDIjoVmgSlgeRunB1SA8RCPAFAiUo3+/zEgzW2Oz8kgI+xVwM\n33XkLKrWG1Orhpp6Hm57MjIc5MG+zF4/YRDpE/KNG9qU1tiz0UD5hOpIU9pP4bR/\ngxgPxZzvbk4h5BfHWLpjlk8UUpgk6uxqfti48c1RAoGBALBOKDZ6HwYRCSGMjUcg\n3NPEUi84JD8qmFc2B7Tv7h2he2ykIz9iFAGpwCIyETQsJKX1Ewi0OlNnD3RhEEAy\nl7jFGQ+mkzPSeCbadmcpYlgIJmf1KN/x7fDTAepeBpCEzfZVE80QKbxsaybd3Dp8\nCfwpwWUFtBxr4c7J+gNhAGe/AoGAPn8ZyqkrPv9wXtyfqFjxQbx4pWhVmNwrkBPi\nZ2Qh3q4dNOPwTvTO8vjghvzIyR8rAZzkjOJKVFgftgYWUZfM5gE7T2mTkBYq8W+U\n8LetF+S9qAM2gDnaDx0kuUTCq7t87DKk6URuQ/SbI0wCzYjjRD99KxvChVGPBHKo\n1DjqMuECgYEAgJGNm7/lJCS2wk81whfy/ttKGsEIkyhPFYQmdGzSYC5aDc2gp1R3\nxtOkYEvdjfaLfDGEa4UX8CHHF+w3t9u8hBtcdhMH6GYb9iv6z0VBTt4A/11HUR49\n3Z7TQ18Iyh3jAUCzFV9IJlLIExq5Y7P4B3ojWFBN607sDCt8BMPbDYs=\n-----END RSA PRIVATE KEY-----" + +  @public_key %{ +    "id" => "https://mastodon.social/users/lambadalambda#main-key", +    "owner" => "https://mastodon.social/users/lambadalambda", +    "publicKeyPem" => +      "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw0P/Tq4gb4G/QVuMGbJo\nC/AfMNcv+m7NfrlOwkVzcU47jgESuYI4UtJayissCdBycHUnfVUd9qol+eznSODz\nCJhfJloqEIC+aSnuEPGA0POtWad6DU0E6/Ho5zQn5WAWUwbRQqowbrsm/GHo2+3v\neR5jGenwA6sYhINg/c3QQbksyV0uJ20Umyx88w8+TJuv53twOfmyDWuYNoQ3y5cc\nHKOZcLHxYOhvwg3PFaGfFHMFiNmF40dTXt9K96r7sbzc44iLD+VphbMPJEjkMuf8\nPGEFOBzy8pm3wJZw2v32RNW2VESwMYyqDzwHXGSq1a73cS7hEnc79gXlELsK04L9\nQQIDAQAB\n-----END PUBLIC KEY-----\n" +  } + +  @rsa_public_key { +    :RSAPublicKey, +    24_650_000_183_914_698_290_885_268_529_673_621_967_457_234_469_123_179_408_466_269_598_577_505_928_170_923_974_132_111_403_341_217_239_999_189_084_572_368_839_502_170_501_850_920_051_662_384_964_248_315_257_926_552_945_648_828_895_432_624_227_029_881_278_113_244_073_644_360_744_504_606_177_648_469_825_063_267_913_017_309_199_785_535_546_734_904_379_798_564_556_494_962_268_682_532_371_146_333_972_821_570_577_277_375_020_977_087_539_994_500_097_107_935_618_711_808_260_846_821_077_839_605_098_669_707_417_692_791_905_543_116_911_754_774_323_678_879_466_618_738_207_538_013_885_607_095_203_516_030_057_611_111_308_904_599_045_146_148_350_745_339_208_006_497_478_057_622_336_882_506_112_530_056_970_653_403_292_123_624_453_213_574_011_183_684_739_084_105_206_483_178_943_532_208_537_215_396_831_110_268_758_639_826_369_857, +    # credo:disable-for-previous-line Credo.Check.Readability.MaxLineLength +    65_537 +  } + +  describe "fetch_public_key/1" do +    test "it returns key" do +      expected_result = {:ok, @rsa_public_key} + +      user = insert(:user, %{info: %{source_data: %{"publicKey" => @public_key}}}) + +      assert Signature.fetch_public_key(%Plug.Conn{params: %{"actor" => user.ap_id}}) == +               expected_result +    end + +    test "it returns error when not found user" do +      assert Signature.fetch_public_key(%Plug.Conn{params: %{"actor" => "test-ap_id"}}) == +               {:error, :error} +    end + +    test "it returns error if public key is empty" do +      user = insert(:user, %{info: %{source_data: %{"publicKey" => %{}}}}) + +      assert Signature.fetch_public_key(%Plug.Conn{params: %{"actor" => user.ap_id}}) == +               {:error, :error} +    end +  end + +  describe "refetch_public_key/1" do +    test "it returns key" do +      ap_id = "https://mastodon.social/users/lambadalambda" + +      assert Signature.refetch_public_key(%Plug.Conn{params: %{"actor" => ap_id}}) == +               {:ok, @rsa_public_key} +    end + +    test "it returns error when not found user" do +      assert Signature.refetch_public_key(%Plug.Conn{params: %{"actor" => "test-ap_id"}}) == +               {:error, {:error, :ok}} +    end +  end + +  describe "sign/2" do +    test "it returns signature headers" do +      user = +        insert(:user, %{ +          ap_id: "https://mastodon.social/users/lambadalambda", +          info: %{keys: @private_key} +        }) + +      assert Signature.sign( +               user, +               %{ +                 host: "test.test", +                 "content-length": 100 +               } +             ) == +               "keyId=\"https://mastodon.social/users/lambadalambda#main-key\",algorithm=\"rsa-sha256\",headers=\"content-length host\",signature=\"sibUOoqsFfTDerquAkyprxzDjmJm6erYc42W5w1IyyxusWngSinq5ILTjaBxFvfarvc7ci1xAi+5gkBwtshRMWm7S+Uqix24Yg5EYafXRun9P25XVnYBEIH4XQ+wlnnzNIXQkU3PU9e6D8aajDZVp3hPJNeYt1gIPOA81bROI8/glzb1SAwQVGRbqUHHHKcwR8keiR/W2h7BwG3pVRy4JgnIZRSW7fQogKedDg02gzRXwUDFDk0pr2p3q6bUWHUXNV8cZIzlMK+v9NlyFbVYBTHctAR26GIAN6Hz0eV0mAQAePHDY1mXppbA8Gpp6hqaMuYfwifcXmcc+QFm4e+n3A==\"" +    end + +    test "it returns error" do +      user = +        insert(:user, %{ap_id: "https://mastodon.social/users/lambadalambda", info: %{keys: ""}}) + +      assert Signature.sign( +               user, +               %{host: "test.test", "content-length": 100} +             ) == {:error, []} +    end +  end +end diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs index bbcc57217..a9b79eb5b 100644 --- a/test/tasks/config_test.exs +++ b/test/tasks/config_test.exs @@ -34,8 +34,8 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do      Mix.Tasks.Pleroma.Config.run(["migrate_to_db"]) -    first_db = Config.get_by_params(%{group: "pleroma", key: "first_setting"}) -    second_db = Config.get_by_params(%{group: "pleroma", key: "second_setting"}) +    first_db = Config.get_by_params(%{group: "pleroma", key: ":first_setting"}) +    second_db = Config.get_by_params(%{group: "pleroma", key: ":second_setting"})      refute Config.get_by_params(%{group: "pleroma", key: "Pleroma.Repo"})      assert Config.from_binary(first_db.value) == [key: "value", key2: [Pleroma.Repo]] @@ -45,13 +45,13 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do    test "settings are migrated to file and deleted from db", %{temp_file: temp_file} do      Config.create(%{        group: "pleroma", -      key: "setting_first", +      key: ":setting_first",        value: [key: "value", key2: [Pleroma.Activity]]      })      Config.create(%{        group: "pleroma", -      key: "setting_second", +      key: ":setting_second",        value: [key: "valu2", key2: [Pleroma.Repo]]      }) @@ -61,7 +61,7 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do      assert File.exists?(temp_file)      {:ok, file} = File.read(temp_file) -    assert file =~ "config :pleroma, setting_first:" -    assert file =~ "config :pleroma, setting_second:" +    assert file =~ "config :pleroma, :setting_first," +    assert file =~ "config :pleroma, :setting_second,"    end  end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 59d56f3a7..00adbc0f9 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1190,6 +1190,21 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      end    end +  test "fetch_activities/2 returns activities addressed to a list " do +    user = insert(:user) +    member = insert(:user) +    {:ok, list} = Pleroma.List.create("foo", user) +    {:ok, list} = Pleroma.List.follow(list, member) + +    {:ok, activity} = +      CommonAPI.post(user, %{"status" => "foobar", "visibility" => "list:#{list.id}"}) + +    activity = Repo.preload(activity, :bookmark) +    activity = %Activity{activity | thread_muted?: !!activity.thread_muted?} + +    assert ActivityPub.fetch_activities([], %{"user" => user}) == [activity] +  end +    def data_uri do      File.read!("test/fixtures/avatar_data_uri")    end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index cabe925f9..a1f5f6e36 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1098,6 +1098,18 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert modified["directMessage"] == true      end + +    test "it strips BCC field" do +      user = insert(:user) +      {:ok, list} = Pleroma.List.create("foo", user) + +      {:ok, activity} = +        CommonAPI.post(user, %{"status" => "foobar", "visibility" => "list:#{list.id}"}) + +      {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) + +      assert is_nil(modified["bcc"]) +    end    end    describe "user upgrade" do diff --git a/test/web/activity_pub/visibilty_test.exs b/test/web/activity_pub/visibilty_test.exs index 4d5c07da4..b62a89e68 100644 --- a/test/web/activity_pub/visibilty_test.exs +++ b/test/web/activity_pub/visibilty_test.exs @@ -16,6 +16,9 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      following = insert(:user)      unrelated = insert(:user)      {:ok, following} = Pleroma.User.follow(following, user) +    {:ok, list} = Pleroma.List.create("foo", user) + +    Pleroma.List.follow(list, unrelated)      {:ok, public} =        CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "public"}) @@ -29,6 +32,12 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      {:ok, unlisted} =        CommonAPI.post(user, %{"status" => "@#{mentioned.nickname}", "visibility" => "unlisted"}) +    {:ok, list} = +      CommonAPI.post(user, %{ +        "status" => "@#{mentioned.nickname}", +        "visibility" => "list:#{list.id}" +      }) +      %{        public: public,        private: private, @@ -37,29 +46,65 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do        user: user,        mentioned: mentioned,        following: following, -      unrelated: unrelated +      unrelated: unrelated, +      list: list      }    end -  test "is_direct?", %{public: public, private: private, direct: direct, unlisted: unlisted} do +  test "is_direct?", %{ +    public: public, +    private: private, +    direct: direct, +    unlisted: unlisted, +    list: list +  } do      assert Visibility.is_direct?(direct)      refute Visibility.is_direct?(public)      refute Visibility.is_direct?(private)      refute Visibility.is_direct?(unlisted) +    assert Visibility.is_direct?(list)    end -  test "is_public?", %{public: public, private: private, direct: direct, unlisted: unlisted} do +  test "is_public?", %{ +    public: public, +    private: private, +    direct: direct, +    unlisted: unlisted, +    list: list +  } do      refute Visibility.is_public?(direct)      assert Visibility.is_public?(public)      refute Visibility.is_public?(private)      assert Visibility.is_public?(unlisted) +    refute Visibility.is_public?(list)    end -  test "is_private?", %{public: public, private: private, direct: direct, unlisted: unlisted} do +  test "is_private?", %{ +    public: public, +    private: private, +    direct: direct, +    unlisted: unlisted, +    list: list +  } do      refute Visibility.is_private?(direct)      refute Visibility.is_private?(public)      assert Visibility.is_private?(private)      refute Visibility.is_private?(unlisted) +    refute Visibility.is_private?(list) +  end + +  test "is_list?", %{ +    public: public, +    private: private, +    direct: direct, +    unlisted: unlisted, +    list: list +  } do +    refute Visibility.is_list?(direct) +    refute Visibility.is_list?(public) +    refute Visibility.is_list?(private) +    refute Visibility.is_list?(unlisted) +    assert Visibility.is_list?(list)    end    test "visible_for_user?", %{ @@ -70,7 +115,8 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      user: user,      mentioned: mentioned,      following: following, -    unrelated: unrelated +    unrelated: unrelated, +    list: list    } do      # All visible to author @@ -78,6 +124,7 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      assert Visibility.visible_for_user?(private, user)      assert Visibility.visible_for_user?(unlisted, user)      assert Visibility.visible_for_user?(direct, user) +    assert Visibility.visible_for_user?(list, user)      # All visible to a mentioned user @@ -85,6 +132,7 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      assert Visibility.visible_for_user?(private, mentioned)      assert Visibility.visible_for_user?(unlisted, mentioned)      assert Visibility.visible_for_user?(direct, mentioned) +    assert Visibility.visible_for_user?(list, mentioned)      # DM not visible for just follower @@ -92,6 +140,7 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      assert Visibility.visible_for_user?(private, following)      assert Visibility.visible_for_user?(unlisted, following)      refute Visibility.visible_for_user?(direct, following) +    refute Visibility.visible_for_user?(list, following)      # Public and unlisted visible for unrelated user @@ -99,6 +148,9 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      assert Visibility.visible_for_user?(unlisted, unrelated)      refute Visibility.visible_for_user?(private, unrelated)      refute Visibility.visible_for_user?(direct, unrelated) + +    # Visible for a list member +    assert Visibility.visible_for_user?(list, unrelated)    end    test "doesn't die when the user doesn't exist", @@ -115,18 +167,24 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do      public: public,      private: private,      direct: direct, -    unlisted: unlisted +    unlisted: unlisted, +    list: list    } do      assert Visibility.get_visibility(public) == "public"      assert Visibility.get_visibility(private) == "private"      assert Visibility.get_visibility(direct) == "direct"      assert Visibility.get_visibility(unlisted) == "unlisted" +    assert Visibility.get_visibility(list) == "list"    end    test "get_visibility with directMessage flag" do      assert Visibility.get_visibility(%{data: %{"directMessage" => true}}) == "direct"    end +  test "get_visibility with listMessage flag" do +    assert Visibility.get_visibility(%{data: %{"listMessage" => ""}}) == "list" +  end +    describe "entire_thread_visible_for_user?/2" do      test "returns false if not found activity", %{user: user} do        refute Visibility.entire_thread_visible_for_user?(%Activity{}, user) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 1b71cbff3..ee48b752c 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1720,7 +1720,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do            configs: [              %{                "group" => "pleroma", -              "key" => "key1", +              "key" => ":key1",                "value" => [                  %{"tuple" => [":key2", "some_val"]},                  %{ @@ -1750,7 +1750,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   "configs" => [                     %{                       "group" => "pleroma", -                     "key" => "key1", +                     "key" => ":key1",                       "value" => [                         %{"tuple" => [":key2", "some_val"]},                         %{ @@ -1782,7 +1782,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do            configs: [              %{                "group" => "pleroma", -              "key" => "key1", +              "key" => ":key1",                "value" => %{"key" => "some_val"}              }            ] @@ -1793,7 +1793,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                   "configs" => [                     %{                       "group" => "pleroma", -                     "key" => "key1", +                     "key" => ":key1",                       "value" => %{"key" => "some_val"}                     }                   ] @@ -1862,6 +1862,45 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do                 ]               }      end + +    test "queues key as atom", %{conn: conn} do +      conn = +        post(conn, "/api/pleroma/admin/config", %{ +          configs: [ +            %{ +              "group" => "pleroma_job_queue", +              "key" => ":queues", +              "value" => [ +                %{"tuple" => [":federator_incoming", 50]}, +                %{"tuple" => [":federator_outgoing", 50]}, +                %{"tuple" => [":web_push", 50]}, +                %{"tuple" => [":mailer", 10]}, +                %{"tuple" => [":transmogrifier", 20]}, +                %{"tuple" => [":scheduled_activities", 10]}, +                %{"tuple" => [":background", 5]} +              ] +            } +          ] +        }) + +      assert json_response(conn, 200) == %{ +               "configs" => [ +                 %{ +                   "group" => "pleroma_job_queue", +                   "key" => ":queues", +                   "value" => [ +                     %{"tuple" => [":federator_incoming", 50]}, +                     %{"tuple" => [":federator_outgoing", 50]}, +                     %{"tuple" => [":web_push", 50]}, +                     %{"tuple" => [":mailer", 10]}, +                     %{"tuple" => [":transmogrifier", 20]}, +                     %{"tuple" => [":scheduled_activities", 10]}, +                     %{"tuple" => [":background", 5]} +                   ] +                 } +               ] +             } +    end    end  end diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index b59b6cbf6..7d8eeb12e 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -129,6 +129,18 @@ defmodule Pleroma.Web.CommonAPITest do                   })        end)      end + +    test "it allows to address a list" do +      user = insert(:user) +      {:ok, list} = Pleroma.List.create("foo", user) + +      {:ok, activity} = +        CommonAPI.post(user, %{"status" => "foobar", "visibility" => "list:#{list.id}"}) + +      assert activity.data["bcc"] == [list.ap_id] +      assert activity.recipients == [list.ap_id, user.ap_id] +      assert activity.data["listMessage"] == list.ap_id +    end    end    describe "reactions" do diff --git a/test/web/mastodon_api/status_view_test.exs b/test/web/mastodon_api/status_view_test.exs index ac42819d8..995bd52c8 100644 --- a/test/web/mastodon_api/status_view_test.exs +++ b/test/web/mastodon_api/status_view_test.exs @@ -541,4 +541,17 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do      assert result[:reblog][:account][:pleroma][:relationship] ==               AccountView.render("relationship.json", %{user: user, target: user})    end + +  test "visibility/list" do +    user = insert(:user) + +    {:ok, list} = Pleroma.List.create("foo", user) + +    {:ok, activity} = +      CommonAPI.post(user, %{"status" => "foobar", "visibility" => "list:#{list.id}"}) + +    status = StatusView.render("status.json", activity: activity) + +    assert status.visibility == "list" +  end  end | 
