diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/fetch_mocks/104410921027210069.json | 72 | ||||
| -rw-r--r-- | test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json | 59 | ||||
| -rw-r--r-- | test/fixtures/fetch_mocks/eal.json | 43 | ||||
| -rw-r--r-- | test/fixtures/fetch_mocks/tuxcrafting.json | 59 | ||||
| -rw-r--r-- | test/object/fetcher_test.exs | 40 | 
5 files changed, 273 insertions, 0 deletions
| diff --git a/test/fixtures/fetch_mocks/104410921027210069.json b/test/fixtures/fetch_mocks/104410921027210069.json new file mode 100644 index 000000000..583f7a4dc --- /dev/null +++ b/test/fixtures/fetch_mocks/104410921027210069.json @@ -0,0 +1,72 @@ +{ +   "@context" : [ +      "https://www.w3.org/ns/activitystreams", +      { +         "atomUri" : "ostatus:atomUri", +         "conversation" : "ostatus:conversation", +         "inReplyToAtomUri" : "ostatus:inReplyToAtomUri", +         "ostatus" : "http://ostatus.org#", +         "sensitive" : "as:sensitive", +         "toot" : "http://joinmastodon.org/ns#", +         "votersCount" : "toot:votersCount" +      } +   ], +   "atomUri" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", +   "attachment" : [], +   "attributedTo" : "https://busshi.moe/users/tuxcrafting", +   "cc" : [ +      "https://busshi.moe/users/tuxcrafting/followers", +      "https://stereophonic.space/users/fixpoint", +      "https://blob.cat/users/blobyoumu", +      "https://cawfee.club/users/grips", +      "https://jaeger.website/users/igel" +   ], +   "content" : "<p><span class=\"h-card\"><a href=\"https://stereophonic.space/users/fixpoint\" class=\"u-url mention\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a href=\"https://blob.cat/users/blobyoumu\" class=\"u-url mention\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a href=\"https://cawfee.club/users/grips\" class=\"u-url mention\">@<span>grips</span></a></span> <span class=\"h-card\"><a href=\"https://jaeger.website/users/igel\" class=\"u-url mention\">@<span>igel</span></a></span> there's a difference between not liking nukes and not liking nuclear power<br />nukes are pretty bad as are all WMDs in general but disliking nuclear power just indicates you are unable of thought</p>", +   "contentMap" : { +      "en" : "<p><span class=\"h-card\"><a href=\"https://stereophonic.space/users/fixpoint\" class=\"u-url mention\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a href=\"https://blob.cat/users/blobyoumu\" class=\"u-url mention\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a href=\"https://cawfee.club/users/grips\" class=\"u-url mention\">@<span>grips</span></a></span> <span class=\"h-card\"><a href=\"https://jaeger.website/users/igel\" class=\"u-url mention\">@<span>igel</span></a></span> there's a difference between not liking nukes and not liking nuclear power<br />nukes are pretty bad as are all WMDs in general but disliking nuclear power just indicates you are unable of thought</p>" +   }, +   "conversation" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", +   "id" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", +   "inReplyTo" : "https://stereophonic.space/objects/02997b83-3ea7-4b63-94af-ef3aa2d4ed17", +   "inReplyToAtomUri" : "https://stereophonic.space/objects/02997b83-3ea7-4b63-94af-ef3aa2d4ed17", +   "published" : "2020-06-26T15:10:19Z", +   "replies" : { +      "first" : { +         "items" : [], +         "next" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies?only_other_accounts=true&page=true", +         "partOf" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies", +         "type" : "CollectionPage" +      }, +      "id" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069/replies", +      "type" : "Collection" +   }, +   "sensitive" : false, +   "summary" : null, +   "tag" : [ +      { +         "href" : "https://stereophonic.space/users/fixpoint", +         "name" : "@fixpoint@stereophonic.space", +         "type" : "Mention" +      }, +      { +         "href" : "https://blob.cat/users/blobyoumu", +         "name" : "@blobyoumu@blob.cat", +         "type" : "Mention" +      }, +      { +         "href" : "https://cawfee.club/users/grips", +         "name" : "@grips@cawfee.club", +         "type" : "Mention" +      }, +      { +         "href" : "https://jaeger.website/users/igel", +         "name" : "@igel@jaeger.website", +         "type" : "Mention" +      } +   ], +   "to" : [ +      "https://www.w3.org/ns/activitystreams#Public" +   ], +   "type" : "Note", +   "url" : "https://busshi.moe/@tuxcrafting/104410921027210069" +} diff --git a/test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json b/test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json new file mode 100644 index 000000000..0226b058a --- /dev/null +++ b/test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json @@ -0,0 +1,59 @@ +{ +   "@context" : [ +      "https://www.w3.org/ns/activitystreams", +      "https://social.sakamoto.gq/schemas/litepub-0.1.jsonld", +      { +         "@language" : "und" +      } +   ], +   "actor" : "https://social.sakamoto.gq/users/eal", +   "attachment" : [], +   "attributedTo" : "https://social.sakamoto.gq/users/eal", +   "cc" : [ +      "https://social.sakamoto.gq/users/eal/followers" +   ], +   "content" : "<span class=\"h-card\"><a data-user=\"9uw2wH0iTYAMV7XnLU\" class=\"u-url mention\" href=\"https://busshi.moe/@tuxcrafting\" rel=\"ugc\">@<span>tuxcrafting</span></a></span> <span class=\"h-card\"><a data-user=\"9r5l8j8x23NI9KUFu4\" class=\"u-url mention\" href=\"https://stereophonic.space/users/fixpoint\" rel=\"ugc\">@<span>fixpoint</span></a></span> <span class=\"h-card\"><a data-user=\"9orDK545JwjY4Lxjge\" class=\"u-url mention\" href=\"https://blob.cat/users/blobyoumu\" rel=\"ugc\">@<span>blobyoumu</span></a></span> <span class=\"h-card\"><a data-user=\"68184\" class=\"u-url mention\" href=\"https://cawfee.club/users/grips\" rel=\"ugc\">@<span>grips</span></a></span> <span class=\"h-card\"><a data-user=\"9sAmMgHVKjTXKpgx84\" class=\"u-url mention\" href=\"https://jaeger.website/users/igel\" rel=\"ugc\">@<span>igel</span></a></span> What's bad about nukes?", +   "context" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", +   "conversation" : "https://cawfee.club/contexts/ad6c73d8-efc2-4e74-84ea-2dacf1a27a5e", +   "id" : "https://social.sakamoto.gq/objects/f20f2497-66d9-4a52-a2e1-1be2a39c32c1", +   "inReplyTo" : "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069", +   "published" : "2020-06-26T15:20:15.975737Z", +   "sensitive" : false, +   "summary" : "", +   "tag" : [ +      { +         "href" : "https://blob.cat/users/blobyoumu", +         "name" : "@blobyoumu@blob.cat", +         "type" : "Mention" +      }, +      { +         "href" : "https://busshi.moe/users/tuxcrafting", +         "name" : "@tuxcrafting@busshi.moe", +         "type" : "Mention" +      }, +      { +         "href" : "https://cawfee.club/users/grips", +         "name" : "@grips@cawfee.club", +         "type" : "Mention" +      }, +      { +         "href" : "https://jaeger.website/users/igel", +         "name" : "@igel@jaeger.website", +         "type" : "Mention" +      }, +      { +         "href" : "https://stereophonic.space/users/fixpoint", +         "name" : "@fixpoint@stereophonic.space", +         "type" : "Mention" +      } +   ], +   "to" : [ +      "https://busshi.moe/users/tuxcrafting", +      "https://www.w3.org/ns/activitystreams#Public", +      "https://blob.cat/users/blobyoumu", +      "https://stereophonic.space/users/fixpoint", +      "https://cawfee.club/users/grips", +      "https://jaeger.website/users/igel" +   ], +   "type" : "Note" +} diff --git a/test/fixtures/fetch_mocks/eal.json b/test/fixtures/fetch_mocks/eal.json new file mode 100644 index 000000000..a605476e6 --- /dev/null +++ b/test/fixtures/fetch_mocks/eal.json @@ -0,0 +1,43 @@ +{ +   "@context" : [ +      "https://www.w3.org/ns/activitystreams", +      "https://social.sakamoto.gq/schemas/litepub-0.1.jsonld", +      { +         "@language" : "und" +      } +   ], +   "attachment" : [], +   "discoverable" : true, +   "endpoints" : { +      "oauthAuthorizationEndpoint" : "https://social.sakamoto.gq/oauth/authorize", +      "oauthRegistrationEndpoint" : "https://social.sakamoto.gq/api/v1/apps", +      "oauthTokenEndpoint" : "https://social.sakamoto.gq/oauth/token", +      "sharedInbox" : "https://social.sakamoto.gq/inbox", +      "uploadMedia" : "https://social.sakamoto.gq/api/ap/upload_media" +   }, +   "followers" : "https://social.sakamoto.gq/users/eal/followers", +   "following" : "https://social.sakamoto.gq/users/eal/following", +   "icon" : { +      "type" : "Image", +      "url" : "https://social.sakamoto.gq/media/f1cb6f79bf6839f3223ca240441f766056b74ddd23c69bcaf8bb1ba1ecff6eec.jpg" +   }, +   "id" : "https://social.sakamoto.gq/users/eal", +   "image" : { +      "type" : "Image", +      "url" : "https://social.sakamoto.gq/media/e5cccf26421e8366f4e34be3c9d5042b8bc8dcceccc7c8e89785fa312dd9632c.jpg" +   }, +   "inbox" : "https://social.sakamoto.gq/users/eal/inbox", +   "manuallyApprovesFollowers" : false, +   "name" : "ìì", +   "outbox" : "https://social.sakamoto.gq/users/eal/outbox", +   "preferredUsername" : "eal", +   "publicKey" : { +      "id" : "https://social.sakamoto.gq/users/eal#main-key", +      "owner" : "https://social.sakamoto.gq/users/eal", +      "publicKeyPem" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz3pF85YOhhv2Zaxv9YQ7\nrCe1aEhetCMVHtrK63tUVGoGdsblyKnVeJNbFcr6k3y35OpHS3HXIi6GzgihYcTu\nONLP4eQMHTnLUNAQZi03mjJA4iIq8v/tm8ZkL2mXsQSAbWj6Iq518mHNN7OvCoNt\n3Xjepl/0kgkc2gsund7m8r+Wu0Fusx6UlUyyAk3PexdDRdSSlVLeskqtP8jtdQDo\nL70pMyL+VD+Qb9RKFdtgJ+M4OqYP+7FVzCqXN0QIPhFf/kvHSLr+c4Y3Wm0nAKHU\n9CwXWXz5Xqscpv41KlgnUCOkTXb5eBSt23lNulae5srVzWBiFb6guiCpNzBGa+Sq\nrwIDAQAB\n-----END PUBLIC KEY-----\n\n" +   }, +   "summary" : "Pizza napoletana supremacist.<br><br>Any artworks posted here that are good are not mine.", +   "tag" : [], +   "type" : "Person", +   "url" : "https://social.sakamoto.gq/users/eal" +} diff --git a/test/fixtures/fetch_mocks/tuxcrafting.json b/test/fixtures/fetch_mocks/tuxcrafting.json new file mode 100644 index 000000000..5dce2a16d --- /dev/null +++ b/test/fixtures/fetch_mocks/tuxcrafting.json @@ -0,0 +1,59 @@ +{ +   "@context" : [ +      "https://www.w3.org/ns/activitystreams", +      "https://w3id.org/security/v1", +      { +         "IdentityProof" : "toot:IdentityProof", +         "PropertyValue" : "schema:PropertyValue", +         "alsoKnownAs" : { +            "@id" : "as:alsoKnownAs", +            "@type" : "@id" +         }, +         "discoverable" : "toot:discoverable", +         "featured" : { +            "@id" : "toot:featured", +            "@type" : "@id" +         }, +         "focalPoint" : { +            "@container" : "@list", +            "@id" : "toot:focalPoint" +         }, +         "manuallyApprovesFollowers" : "as:manuallyApprovesFollowers", +         "movedTo" : { +            "@id" : "as:movedTo", +            "@type" : "@id" +         }, +         "schema" : "http://schema.org#", +         "toot" : "http://joinmastodon.org/ns#", +         "value" : "schema:value" +      } +   ], +   "attachment" : [], +   "discoverable" : true, +   "endpoints" : { +      "sharedInbox" : "https://busshi.moe/inbox" +   }, +   "featured" : "https://busshi.moe/users/tuxcrafting/collections/featured", +   "followers" : "https://busshi.moe/users/tuxcrafting/followers", +   "following" : "https://busshi.moe/users/tuxcrafting/following", +   "icon" : { +      "mediaType" : "image/jpeg", +      "type" : "Image", +      "url" : "https://blobcdn.busshi.moe/busshifiles/accounts/avatars/000/046/872/original/054f0806ccb303d0.jpg" +   }, +   "id" : "https://busshi.moe/users/tuxcrafting", +   "inbox" : "https://busshi.moe/users/tuxcrafting/inbox", +   "manuallyApprovesFollowers" : true, +   "name" : "@tuxcrafting@localhost:8080", +   "outbox" : "https://busshi.moe/users/tuxcrafting/outbox", +   "preferredUsername" : "tuxcrafting", +   "publicKey" : { +      "id" : "https://busshi.moe/users/tuxcrafting#main-key", +      "owner" : "https://busshi.moe/users/tuxcrafting", +      "publicKeyPem" : "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWWTBf9OizsBiBhGS/M\nQTT6fB1VvQP6vvxouGZ5cGg1a97V67ouhjJ+nGMuWr++DNYjJYkk2TOynfykk0H/\n8rRSujSe3BNRKYGNzdnRJu/4XxgIE847Fqx5SijSP23JGYcn8TjeSUsN2u2YYVXK\n+Eb3Bu7DjGiqwNon6YB0h5qkGjkMSMVIFn0hZx6Z21bkfYWgra96Ok5OWf7Ck3je\nCuErlCMZcbQcHtFpBueJAxYchjNvm6fqwZxLX/NtaHdr7Fm2kin89mqzliapBlFH\nCXk7Jln6xV5I6ryggPAMzm3fuHzeo0RWlu8lrxLfARBVwaQQZS99bwqp6N9O2aUp\nYwIDAQAB\n-----END PUBLIC KEY-----\n" +   }, +   "summary" : "<p>expert procrastinator</p><p>trans(humanist|gender|istorized)</p><p>web: <a href=\"https://tuxcrafting.port0.org\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">tuxcrafting.port0.org</span><span class=\"invisible\"></span></a><br />pronouns: she/they<br />languages: french (native)/english (fluent)/hebrew (ok-ish)/esperanto (barely)</p>", +   "tag" : [], +   "type" : "Person", +   "url" : "https://busshi.moe/@tuxcrafting" +} diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index c06e91f12..d9098ea1b 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -26,6 +26,46 @@ defmodule Pleroma.Object.FetcherTest do      :ok    end +  describe "error cases" do +    setup do +      mock(fn +        %{method: :get, url: "https://social.sakamoto.gq/notice/9wTkLEnuq47B25EehM"} -> +          %Tesla.Env{ +            status: 200, +            body: File.read!("test/fixtures/fetch_mocks/9wTkLEnuq47B25EehM.json") +          } + +        %{method: :get, url: "https://social.sakamoto.gq/users/eal"} -> +          %Tesla.Env{ +            status: 200, +            body: File.read!("test/fixtures/fetch_mocks/eal.json") +          } + +        %{method: :get, url: "https://busshi.moe/users/tuxcrafting/statuses/104410921027210069"} -> +          %Tesla.Env{ +            status: 200, +            body: File.read!("test/fixtures/fetch_mocks/104410921027210069.json") +          } + +        %{method: :get, url: "https://busshi.moe/users/tuxcrafting"} -> +          %Tesla.Env{ +            status: 500 +          } +      end) + +      :ok +    end + +    @tag capture_log: true +    test "it works when fetching the OP actor errors out" do +      # Here we simulate a case where the author of the OP can't be read +      assert {:ok, _} = +               Fetcher.fetch_object_from_id( +                 "https://social.sakamoto.gq/notice/9wTkLEnuq47B25EehM" +               ) +    end +  end +    describe "max thread distance restriction" do      @ap_id "http://mastodon.example.org/@admin/99541947525187367"      setup do: clear_config([:instance, :federation_incoming_replies_max_depth]) | 
