diff options
| author | lambda <pleromagit@rogerbraun.net> | 2019-02-17 17:39:45 +0000 | 
|---|---|---|
| committer | lambda <pleromagit@rogerbraun.net> | 2019-02-17 17:39:45 +0000 | 
| commit | a2f4fc49fe6d12fb9fc442b63f2ddd63e3e44782 (patch) | |
| tree | 6020b41080baf529496a5faf36e1523279a76511 /test/web/activity_pub | |
| parent | 25ab90edeaae53b6ce084d1ba9a02df5505b5041 (diff) | |
| parent | 79e503b3f5ea87c53d4c616ca9ddfa049877705c (diff) | |
| download | pleroma-a2f4fc49fe6d12fb9fc442b63f2ddd63e3e44782.tar.gz pleroma-a2f4fc49fe6d12fb9fc442b63f2ddd63e3e44782.zip  | |
Merge branch 'develop' into 'docs/add-clients-to-ex_doc'
# Conflicts:
#   mix.exs
Diffstat (limited to 'test/web/activity_pub')
| -rw-r--r-- | test/web/activity_pub/activity_pub_controller_test.exs | 13 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 5 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/hellthread_policy_test.exs | 73 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 54 | ||||
| -rw-r--r-- | test/web/activity_pub/views/user_view_test.exs | 39 | 
5 files changed, 179 insertions, 5 deletions
diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 570bee6b3..398bedf77 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -5,8 +5,13 @@  defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do    use Pleroma.Web.ConnCase    import Pleroma.Factory -  alias Pleroma.Web.ActivityPub.{UserView, ObjectView} -  alias Pleroma.{Object, Repo, Activity, User, Instances} +  alias Pleroma.Web.ActivityPub.UserView +  alias Pleroma.Web.ActivityPub.ObjectView +  alias Pleroma.Object +  alias Pleroma.Repo +  alias Pleroma.Activity +  alias Pleroma.User +  alias Pleroma.Instances    setup_all do      Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -397,7 +402,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do          |> json_response(200)        assert result["first"]["orderedItems"] == [] -      assert result["totalItems"] == 1 +      assert result["totalItems"] == 0      end      test "it works for more than 10 users", %{conn: conn} do @@ -452,7 +457,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do          |> json_response(200)        assert result["first"]["orderedItems"] == [] -      assert result["totalItems"] == 1 +      assert result["totalItems"] == 0      end      test "it works for more than 10 users", %{conn: conn} do diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index a55961ac4..a6f8b822a 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -7,7 +7,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do    alias Pleroma.Web.ActivityPub.ActivityPub    alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.CommonAPI -  alias Pleroma.{Activity, Object, User, Instances} +  alias Pleroma.Activity +  alias Pleroma.Object +  alias Pleroma.User +  alias Pleroma.Instances    alias Pleroma.Builders.ActivityBuilder    import Pleroma.Factory diff --git a/test/web/activity_pub/mrf/hellthread_policy_test.exs b/test/web/activity_pub/mrf/hellthread_policy_test.exs new file mode 100644 index 000000000..eb6ee4d04 --- /dev/null +++ b/test/web/activity_pub/mrf/hellthread_policy_test.exs @@ -0,0 +1,73 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do +  use Pleroma.DataCase +  import Pleroma.Factory + +  import Pleroma.Web.ActivityPub.MRF.HellthreadPolicy + +  setup do +    user = insert(:user) + +    message = %{ +      "actor" => user.ap_id, +      "cc" => [user.follower_address], +      "type" => "Create", +      "to" => [ +        "https://www.w3.org/ns/activitystreams#Public", +        "https://instance.tld/users/user1", +        "https://instance.tld/users/user2", +        "https://instance.tld/users/user3" +      ] +    } + +    [user: user, message: message] +  end + +  describe "reject" do +    test "rejects the message if the recipient count is above reject_threshold", %{ +      message: message +    } do +      Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 2}) + +      {:reject, nil} = filter(message) +    end + +    test "does not reject the message if the recipient count is below reject_threshold", %{ +      message: message +    } do +      Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 3}) + +      assert {:ok, ^message} = filter(message) +    end +  end + +  describe "delist" do +    test "delists the message if the recipient count is above delist_threshold", %{ +      user: user, +      message: message +    } do +      Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 2, reject_threshold: 0}) + +      {:ok, message} = filter(message) +      assert user.follower_address in message["to"] +      assert "https://www.w3.org/ns/activitystreams#Public" in message["cc"] +    end + +    test "does not delist the message if the recipient count is below delist_threshold", %{ +      message: message +    } do +      Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 4, reject_threshold: 0}) + +      assert {:ok, ^message} = filter(message) +    end +  end + +  test "excludes follower collection and public URI from threshold count", %{message: message} do +    Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 3}) + +    assert {:ok, ^message} = filter(message) +  end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index e5e3c8d33..86c66deff 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1128,4 +1128,58 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do          )      end    end + +  describe "reserialization" do +    test "successfully reserializes a message with inReplyTo == nil" do +      user = insert(:user) + +      message = %{ +        "@context" => "https://www.w3.org/ns/activitystreams", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "cc" => [], +        "type" => "Create", +        "object" => %{ +          "to" => ["https://www.w3.org/ns/activitystreams#Public"], +          "cc" => [], +          "type" => "Note", +          "content" => "Hi", +          "inReplyTo" => nil, +          "attributedTo" => user.ap_id +        }, +        "actor" => user.ap_id +      } + +      {:ok, activity} = Transmogrifier.handle_incoming(message) + +      {:ok, _} = Transmogrifier.prepare_outgoing(activity.data) +    end + +    test "successfully reserializes a message with AS2 objects in IR" do +      user = insert(:user) + +      message = %{ +        "@context" => "https://www.w3.org/ns/activitystreams", +        "to" => ["https://www.w3.org/ns/activitystreams#Public"], +        "cc" => [], +        "type" => "Create", +        "object" => %{ +          "to" => ["https://www.w3.org/ns/activitystreams#Public"], +          "cc" => [], +          "type" => "Note", +          "content" => "Hi", +          "inReplyTo" => nil, +          "attributedTo" => user.ap_id, +          "tag" => [ +            %{"name" => "#2hu", "href" => "http://example.com/2hu", "type" => "Hashtag"}, +            %{"name" => "Bob", "href" => "http://example.com/bob", "type" => "Mention"} +          ] +        }, +        "actor" => user.ap_id +      } + +      {:ok, activity} = Transmogrifier.handle_incoming(message) + +      {:ok, _} = Transmogrifier.prepare_outgoing(activity.data) +    end +  end  end diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 7fc870e96..0bc1d4728 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -15,4 +15,43 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do      assert String.contains?(result["publicKey"]["publicKeyPem"], "BEGIN PUBLIC KEY")    end + +  describe "endpoints" do +    test "local users have a usable endpoints structure" do +      user = insert(:user) +      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) + +      result = UserView.render("user.json", %{user: user}) + +      assert result["id"] == user.ap_id + +      %{ +        "sharedInbox" => _, +        "oauthAuthorizationEndpoint" => _, +        "oauthRegistrationEndpoint" => _, +        "oauthTokenEndpoint" => _ +      } = result["endpoints"] +    end + +    test "remote users have an empty endpoints structure" do +      user = insert(:user, local: false) +      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) + +      result = UserView.render("user.json", %{user: user}) + +      assert result["id"] == user.ap_id +      assert result["endpoints"] == %{} +    end + +    test "instance users do not expose oAuth endpoints" do +      user = insert(:user, nickname: nil, local: true) +      {:ok, user} = Pleroma.Web.WebFinger.ensure_keys_present(user) + +      result = UserView.render("user.json", %{user: user}) + +      refute result["endpoints"]["oauthAuthorizationEndpoint"] +      refute result["endpoints"]["oauthRegistrationEndpoint"] +      refute result["endpoints"]["oauthTokenEndpoint"] +    end +  end  end  | 
