diff options
| author | kaniini <ariadne@dereferenced.org> | 2019-10-05 19:28:29 +0000 | 
|---|---|---|
| committer | kaniini <ariadne@dereferenced.org> | 2019-10-05 19:28:29 +0000 | 
| commit | 45b7f03f89ac4ef308720dc7f6d1230c63a6e197 (patch) | |
| tree | 3e0961c9df7b334e3e6093a9937f4d1ec22f86ed /test | |
| parent | 17ff4b43cb75334e6a6845a7d7ec9c88285a339d (diff) | |
| parent | b1ff66dc5f0f3915152314677bcd2379be0dd43b (diff) | |
| download | pleroma-45b7f03f89ac4ef308720dc7f6d1230c63a6e197.tar.gz pleroma-45b7f03f89ac4ef308720dc7f6d1230c63a6e197.zip  | |
Merge branch 'accept-embedded-announce-object' into 'develop'
Import object from self-Announce whenever possible
See merge request pleroma/pleroma!1770
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/bogus-mastodon-announce.json | 43 | ||||
| -rw-r--r-- | test/fixtures/mastodon-announce-private.json | 35 | ||||
| -rw-r--r-- | test/support/http_request_mock.ex | 16 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 27 | 
4 files changed, 121 insertions, 0 deletions
diff --git a/test/fixtures/bogus-mastodon-announce.json b/test/fixtures/bogus-mastodon-announce.json new file mode 100644 index 000000000..0485b80b9 --- /dev/null +++ b/test/fixtures/bogus-mastodon-announce.json @@ -0,0 +1,43 @@ +{ +  "type": "Announce", +  "to": [ +    "https://www.w3.org/ns/activitystreams#Public" +  ], +  "published": "2018-02-17T19:39:15Z", +  "object": { +    "type": "Note", +    "id": "https://mastodon.social/users/emelie/statuses/101849165031453404", +    "attributedTo": "https://mastodon.social/users/emelie", +    "content": "this is a public toot", +    "to": [ +      "https://www.w3.org/ns/activitystreams#Public" +    ], +    "cc": [ +      "https://mastodon.social/users/emelie", +      "https://mastodon.social/users/emelie/followers" +    ] +  }, +  "id": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", +  "cc": [ +    "http://mastodon.example.org/users/admin", +    "http://mastodon.example.org/users/admin/followers" +  ], +  "atomUri": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", +  "actor": "http://mastodon.example.org/users/admin", +  "@context": [ +    "https://www.w3.org/ns/activitystreams", +    "https://w3id.org/security/v1", +    { +      "toot": "http://joinmastodon.org/ns#", +      "sensitive": "as:sensitive", +      "ostatus": "http://ostatus.org#", +      "movedTo": "as:movedTo", +      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", +      "inReplyToAtomUri": "ostatus:inReplyToAtomUri", +      "conversation": "ostatus:conversation", +      "atomUri": "ostatus:atomUri", +      "Hashtag": "as:Hashtag", +      "Emoji": "toot:Emoji" +    } +  ] +} diff --git a/test/fixtures/mastodon-announce-private.json b/test/fixtures/mastodon-announce-private.json new file mode 100644 index 000000000..9b868b13d --- /dev/null +++ b/test/fixtures/mastodon-announce-private.json @@ -0,0 +1,35 @@ +{ +  "type": "Announce", +  "to": [ +    "http://mastodon.example.org/users/admin/followers" +  ], +  "published": "2018-02-17T19:39:15Z", +  "object": { +    "type": "Note", +    "id": "http://mastodon.example.org/@admin/99541947525187368", +    "attributedTo": "http://mastodon.example.org/users/admin", +    "content": "this is a private toot", +    "to": [ +      "http://mastodon.example.org/users/admin/followers" +    ] +  }, +  "id": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", +  "atomUri": "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity", +  "actor": "http://mastodon.example.org/users/admin", +  "@context": [ +    "https://www.w3.org/ns/activitystreams", +    "https://w3id.org/security/v1", +    { +      "toot": "http://joinmastodon.org/ns#", +      "sensitive": "as:sensitive", +      "ostatus": "http://ostatus.org#", +      "movedTo": "as:movedTo", +      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", +      "inReplyToAtomUri": "ostatus:inReplyToAtomUri", +      "conversation": "ostatus:conversation", +      "atomUri": "ostatus:atomUri", +      "Hashtag": "as:Hashtag", +      "Emoji": "toot:Emoji" +    } +  ] +} diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 5506c0626..b825a9307 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -46,6 +46,14 @@ defmodule HttpRequestMock do       }}    end +  def get("https://mastodon.social/users/emelie/statuses/101849165031453404", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 404, +       body: "" +     }} +  end +    def get("https://mastodon.social/users/emelie", _, _, _) do      {:ok,       %Tesla.Env{ @@ -349,6 +357,14 @@ defmodule HttpRequestMock do       }}    end +  def get("http://mastodon.example.org/@admin/99541947525187368", _, _, _) do +    {:ok, +     %Tesla.Env{ +       status: 404, +       body: "" +     }} +  end +    def get("https://shitposter.club/notice/7369654", _, _, _) do      {:ok,       %Tesla.Env{ diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 475313316..50c0bfb84 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -442,6 +442,33 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert Activity.get_create_by_object_ap_id(data["object"]).id == activity.id      end +    test "it works for incoming announces with an inlined activity" do +      data = +        File.read!("test/fixtures/mastodon-announce-private.json") +        |> Poison.decode!() + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "http://mastodon.example.org/users/admin" +      assert data["type"] == "Announce" + +      assert data["id"] == +               "http://mastodon.example.org/users/admin/statuses/99542391527669785/activity" + +      object = Object.normalize(data["object"]) + +      assert object.data["id"] == "http://mastodon.example.org/@admin/99541947525187368" +      assert object.data["content"] == "this is a private toot" +    end + +    test "it rejects incoming announces with an inlined activity from another origin" do +      data = +        File.read!("test/fixtures/bogus-mastodon-announce.json") +        |> Poison.decode!() + +      assert :error = Transmogrifier.handle_incoming(data) +    end +      test "it does not clobber the addressing on announce activities" do        user = insert(:user)        {:ok, activity} = CommonAPI.post(user, %{"status" => "hey"})  | 
