diff options
| author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-08-22 20:59:58 +0300 | 
|---|---|---|
| committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-08-22 20:59:58 +0300 | 
| commit | 256ff09aa8068166a9f83e3159f060fd4598af76 (patch) | |
| tree | a5e5efa83241f28d8d241b9d2d95ca4ceaefd286 /test/web/activity_pub | |
| parent | 8778c16dac1789eeb6dd51524573163216200b5d (diff) | |
| parent | 73884441f31092bdb2f509950daf9bd3889a9a8b (diff) | |
| download | pleroma-256ff09aa8068166a9f83e3159f060fd4598af76.tar.gz pleroma-256ff09aa8068166a9f83e3159f060fd4598af76.zip  | |
[#1149] Merge remote-tracking branch 'remotes/upstream/develop' into 1149-oban-job-queue
# Conflicts:
#	lib/pleroma/application.ex
#	lib/pleroma/scheduled_activity_worker.ex
#	lib/pleroma/web/federator/retry_queue.ex
#	lib/pleroma/web/oauth/token/clean_worker.ex
#	test/user_test.exs
#	test/web/federator_test.exs
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 15 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 23 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/mrf_test.exs | 6 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/reject_non_public_test.exs | 7 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/simple_policy_test.exs | 8 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/user_allowlist_policy_test.exs | 7 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/vocabulary_policy_test.exs | 25 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 54 | ||||
| -rw-r--r-- | test/web/activity_pub/views/user_view_test.exs | 15 | 
9 files changed, 108 insertions, 52 deletions
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index f46353fdd..a214f57a6 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -20,17 +20,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) - -    config_path = [:instance, :federating] -    initial_setting = Pleroma.Config.get(config_path) - -    Pleroma.Config.put(config_path, true) -    on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end) -      :ok    end +  clear_config_all([:instance, :federating], +    do: Pleroma.Config.put([:instance, :federating], true) +  ) +    describe "/relay" do +    clear_config([:instance, :allow_relay]) +      test "with the relay active, it returns the relay user", %{conn: conn} do        res =          conn @@ -47,8 +46,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do        |> get(activity_pub_path(conn, :relay))        |> json_response(404)        |> assert - -      Pleroma.Config.put([:instance, :allow_relay], true)      end    end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d723f331f..1515f4eb6 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -538,6 +538,29 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do      assert Enum.member?(activities, activity_one)    end +  test "doesn't return thread muted activities" do +    user = insert(:user) +    _activity_one = insert(:note_activity) +    note_two = insert(:note, data: %{"context" => "suya.."}) +    activity_two = insert(:note_activity, note: note_two) + +    {:ok, _activity_two} = CommonAPI.add_mute(user, activity_two) + +    assert [_activity_one] = ActivityPub.fetch_activities([], %{"muting_user" => user}) +  end + +  test "returns thread muted activities when with_muted is set" do +    user = insert(:user) +    _activity_one = insert(:note_activity) +    note_two = insert(:note, data: %{"context" => "suya.."}) +    activity_two = insert(:note_activity, note: note_two) + +    {:ok, _activity_two} = CommonAPI.add_mute(user, activity_two) + +    assert [_activity_two, _activity_one] = +             ActivityPub.fetch_activities([], %{"muting_user" => user, "with_muted" => true}) +  end +    test "does include announces on request" do      activity_three = insert(:note_activity)      user = insert(:user) diff --git a/test/web/activity_pub/mrf/mrf_test.exs b/test/web/activity_pub/mrf/mrf_test.exs index 19e172939..04709df17 100644 --- a/test/web/activity_pub/mrf/mrf_test.exs +++ b/test/web/activity_pub/mrf/mrf_test.exs @@ -1,5 +1,6 @@  defmodule Pleroma.Web.ActivityPub.MRFTest do    use ExUnit.Case, async: true +  use Pleroma.Tests.Helpers    alias Pleroma.Web.ActivityPub.MRF    test "subdomains_regex/1" do @@ -59,6 +60,8 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do    end    describe "describe/0" do +    clear_config([:instance, :rewrite_policy]) +      test "it works as expected with noop policy" do        expected = %{          mrf_policies: ["NoOpPolicy"], @@ -69,7 +72,6 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do      end      test "it works as expected with mock policy" do -      config = Pleroma.Config.get([:instance, :rewrite_policy])        Pleroma.Config.put([:instance, :rewrite_policy], [MRFModuleMock])        expected = %{ @@ -79,8 +81,6 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do        }        {:ok, ^expected} = MRF.describe() - -      Pleroma.Config.put([:instance, :rewrite_policy], config)      end    end  end diff --git a/test/web/activity_pub/mrf/reject_non_public_test.exs b/test/web/activity_pub/mrf/reject_non_public_test.exs index fdf6b245e..fc1d190bb 100644 --- a/test/web/activity_pub/mrf/reject_non_public_test.exs +++ b/test/web/activity_pub/mrf/reject_non_public_test.exs @@ -8,12 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublicTest do    alias Pleroma.Web.ActivityPub.MRF.RejectNonPublic -  setup do -    policy = Pleroma.Config.get([:mrf_rejectnonpublic]) -    on_exit(fn -> Pleroma.Config.put([:mrf_rejectnonpublic], policy) end) - -    :ok -  end +  clear_config([:mrf_rejectnonpublic])    describe "public message" do      test "it's allowed when address is public" do diff --git a/test/web/activity_pub/mrf/simple_policy_test.exs b/test/web/activity_pub/mrf/simple_policy_test.exs index 8e86d2219..7203b27da 100644 --- a/test/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/web/activity_pub/mrf/simple_policy_test.exs @@ -8,9 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do    alias Pleroma.Config    alias Pleroma.Web.ActivityPub.MRF.SimplePolicy -  setup do -    orig = Config.get!(:mrf_simple) - +  clear_config([:mrf_simple]) do      Config.put(:mrf_simple,        media_removal: [],        media_nsfw: [], @@ -21,10 +19,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do        avatar_removal: [],        banner_removal: []      ) - -    on_exit(fn -> -      Config.put(:mrf_simple, orig) -    end)    end    describe "when :media_removal" do diff --git a/test/web/activity_pub/mrf/user_allowlist_policy_test.exs b/test/web/activity_pub/mrf/user_allowlist_policy_test.exs index 6519e2398..72084c0fd 100644 --- a/test/web/activity_pub/mrf/user_allowlist_policy_test.exs +++ b/test/web/activity_pub/mrf/user_allowlist_policy_test.exs @@ -7,12 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicyTest do    alias Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy -  setup do -    policy = Pleroma.Config.get([:mrf_user_allowlist]) || [] -    on_exit(fn -> Pleroma.Config.put([:mrf_user_allowlist], policy) end) - -    :ok -  end +  clear_config([:mrf_user_allowlist, :localhost])    test "pass filter if allow list is empty" do      actor = insert(:user) diff --git a/test/web/activity_pub/mrf/vocabulary_policy_test.exs b/test/web/activity_pub/mrf/vocabulary_policy_test.exs index c3b11d7a1..38309f9f1 100644 --- a/test/web/activity_pub/mrf/vocabulary_policy_test.exs +++ b/test/web/activity_pub/mrf/vocabulary_policy_test.exs @@ -8,8 +8,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do    alias Pleroma.Web.ActivityPub.MRF.VocabularyPolicy    describe "accept" do +    clear_config([:mrf_vocabulary, :accept]) +      test "it accepts based on parent activity type" do -      config = Pleroma.Config.get([:mrf_vocabulary, :accept])        Pleroma.Config.put([:mrf_vocabulary, :accept], ["Like"])        message = %{ @@ -18,12 +19,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:ok, ^message} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :accept], config)      end      test "it accepts based on child object type" do -      config = Pleroma.Config.get([:mrf_vocabulary, :accept])        Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])        message = %{ @@ -35,12 +33,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:ok, ^message} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :accept], config)      end      test "it does not accept disallowed child objects" do -      config = Pleroma.Config.get([:mrf_vocabulary, :accept])        Pleroma.Config.put([:mrf_vocabulary, :accept], ["Create", "Note"])        message = %{ @@ -52,12 +47,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:reject, nil} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :accept], config)      end      test "it does not accept disallowed parent types" do -      config = Pleroma.Config.get([:mrf_vocabulary, :accept])        Pleroma.Config.put([:mrf_vocabulary, :accept], ["Announce", "Note"])        message = %{ @@ -69,14 +61,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:reject, nil} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :accept], config)      end    end    describe "reject" do +    clear_config([:mrf_vocabulary, :reject]) +      test "it rejects based on parent activity type" do -      config = Pleroma.Config.get([:mrf_vocabulary, :reject])        Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])        message = %{ @@ -85,12 +76,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:reject, nil} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :reject], config)      end      test "it rejects based on child object type" do -      config = Pleroma.Config.get([:mrf_vocabulary, :reject])        Pleroma.Config.put([:mrf_vocabulary, :reject], ["Note"])        message = %{ @@ -102,12 +90,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:reject, nil} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :reject], config)      end      test "it passes through objects that aren't disallowed" do -      config = Pleroma.Config.get([:mrf_vocabulary, :reject])        Pleroma.Config.put([:mrf_vocabulary, :reject], ["Like"])        message = %{ @@ -116,8 +101,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicyTest do        }        {:ok, ^message} = VocabularyPolicy.filter(message) - -      Pleroma.Config.put([:mrf_vocabulary, :reject], config)      end    end  end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index e80263328..86605c336 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -510,6 +510,60 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert user.bio == "<p>Some bio</p>"      end +    test "it works with custom profile fields" do +      {:ok, activity} = +        "test/fixtures/mastodon-post-activity.json" +        |> File.read!() +        |> Poison.decode!() +        |> Transmogrifier.handle_incoming() + +      user = User.get_cached_by_ap_id(activity.actor) + +      assert User.Info.fields(user.info) == [ +               %{"name" => "foo", "value" => "bar"}, +               %{"name" => "foo1", "value" => "bar1"} +             ] + +      update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!() + +      object = +        update_data["object"] +        |> Map.put("actor", user.ap_id) +        |> Map.put("id", user.ap_id) + +      update_data = +        update_data +        |> Map.put("actor", user.ap_id) +        |> Map.put("object", object) + +      {:ok, _update_activity} = Transmogrifier.handle_incoming(update_data) + +      user = User.get_cached_by_ap_id(user.ap_id) + +      assert User.Info.fields(user.info) == [ +               %{"name" => "foo", "value" => "updated"}, +               %{"name" => "foo1", "value" => "updated"} +             ] + +      Pleroma.Config.put([:instance, :max_remote_account_fields], 2) + +      update_data = +        put_in(update_data, ["object", "attachment"], [ +          %{"name" => "foo", "type" => "PropertyValue", "value" => "bar"}, +          %{"name" => "foo11", "type" => "PropertyValue", "value" => "bar11"}, +          %{"name" => "foo22", "type" => "PropertyValue", "value" => "bar22"} +        ]) + +      {:ok, _} = Transmogrifier.handle_incoming(update_data) + +      user = User.get_cached_by_ap_id(user.ap_id) + +      assert User.Info.fields(user.info) == [ +               %{"name" => "foo", "value" => "updated"}, +               %{"name" => "foo1", "value" => "updated"} +             ] +    end +      test "it works for incoming update activities which lock the account" do        data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 86254117f..fb7fd9e79 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -22,6 +22,21 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do      assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY")    end +  test "Renders profile fields" do +    fields = [ +      %{"name" => "foo", "value" => "bar"} +    ] + +    {:ok, user} = +      insert(:user) +      |> User.upgrade_changeset(%{info: %{fields: fields}}) +      |> User.update_and_set_cache() + +    assert %{ +             "attachment" => [%{"name" => "foo", "type" => "PropertyValue", "value" => "bar"}] +           } = UserView.render("user.json", %{user: user}) +  end +    test "Does not add an avatar image if the user hasn't set one" do      user = insert(:user)      {:ok, user} = User.ensure_keys_present(user)  | 
