diff options
| author | lain <lain@soykaf.club> | 2020-07-03 13:58:34 +0200 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2020-07-03 13:58:34 +0200 | 
| commit | 5c0bf4c4721f03bd854d4466e77aa08e260c9299 (patch) | |
| tree | 982f373740729ef6b019b524e628c845a408dcd4 | |
| parent | 8289ec67a80697a1a4843c0ea50e66b01bf3bb00 (diff) | |
| download | pleroma-5c0bf4c4721f03bd854d4466e77aa08e260c9299.tar.gz pleroma-5c0bf4c4721f03bd854d4466e77aa08e260c9299.zip | |
ActivityPub: Ingest information about chat acceptance.
| -rw-r--r-- | lib/pleroma/user.ex | 3 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 4 | ||||
| -rw-r--r-- | test/fixtures/tesla_mock/admin@mastdon.example.org.json | 1 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 55 | 
4 files changed, 37 insertions, 26 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 7a684b192..a4130c89f 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -437,7 +437,8 @@ defmodule Pleroma.User do          :discoverable,          :invisible,          :actor_type, -        :also_known_as +        :also_known_as, +        :accepts_chat_messages        ]      )      |> validate_required([:name, :ap_id]) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 94117202c..86428b861 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -1224,6 +1224,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do        end)      locked = data["manuallyApprovesFollowers"] || false +    accepts_chat_messages = data["acceptsChatMessages"]      data = Transmogrifier.maybe_fix_user_object(data)      discoverable = data["discoverable"] || false      invisible = data["invisible"] || false @@ -1262,7 +1263,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do        also_known_as: Map.get(data, "alsoKnownAs", []),        public_key: public_key,        inbox: data["inbox"], -      shared_inbox: shared_inbox +      shared_inbox: shared_inbox, +      accepts_chat_messages: accepts_chat_messages      }      # nickname can be nil because of virtual actors diff --git a/test/fixtures/tesla_mock/admin@mastdon.example.org.json b/test/fixtures/tesla_mock/admin@mastdon.example.org.json index 9fdd6557c..f5cf174be 100644 --- a/test/fixtures/tesla_mock/admin@mastdon.example.org.json +++ b/test/fixtures/tesla_mock/admin@mastdon.example.org.json @@ -26,6 +26,7 @@    "summary": "\u003cp\u003e\u003c/p\u003e",    "url": "http://mastodon.example.org/@admin",    "manuallyApprovesFollowers": false, +  "acceptsChatMessages": true,    "publicKey": {      "id": "http://mastodon.example.org/users/admin#main-key",      "owner": "http://mastodon.example.org/users/admin", diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 575e0c5db..ef69f3d91 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -184,36 +184,43 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        assert User.invisible?(user)      end -    test "it fetches the appropriate tag-restricted posts" do -      user = insert(:user) +    test "it returns a user that accepts chat messages" do +      user_id = "http://mastodon.example.org/users/admin" +      {:ok, user} = ActivityPub.make_user_from_ap_id(user_id) -      {:ok, status_one} = CommonAPI.post(user, %{status: ". #test"}) -      {:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"}) -      {:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"}) +      assert user.accepts_chat_messages +    end +  end -      fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"}) +  test "it fetches the appropriate tag-restricted posts" do +    user = insert(:user) -      fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]}) +    {:ok, status_one} = CommonAPI.post(user, %{status: ". #test"}) +    {:ok, status_two} = CommonAPI.post(user, %{status: ". #essais"}) +    {:ok, status_three} = CommonAPI.post(user, %{status: ". #test #reject"}) -      fetch_three = -        ActivityPub.fetch_activities([], %{ -          type: "Create", -          tag: ["test", "essais"], -          tag_reject: ["reject"] -        }) +    fetch_one = ActivityPub.fetch_activities([], %{type: "Create", tag: "test"}) -      fetch_four = -        ActivityPub.fetch_activities([], %{ -          type: "Create", -          tag: ["test"], -          tag_all: ["test", "reject"] -        }) +    fetch_two = ActivityPub.fetch_activities([], %{type: "Create", tag: ["test", "essais"]}) -      assert fetch_one == [status_one, status_three] -      assert fetch_two == [status_one, status_two, status_three] -      assert fetch_three == [status_one, status_two] -      assert fetch_four == [status_three] -    end +    fetch_three = +      ActivityPub.fetch_activities([], %{ +        type: "Create", +        tag: ["test", "essais"], +        tag_reject: ["reject"] +      }) + +    fetch_four = +      ActivityPub.fetch_activities([], %{ +        type: "Create", +        tag: ["test"], +        tag_all: ["test", "reject"] +      }) + +    assert fetch_one == [status_one, status_three] +    assert fetch_two == [status_one, status_two, status_three] +    assert fetch_three == [status_one, status_two] +    assert fetch_four == [status_three]    end    describe "insertion" do | 
