From 6386c1c9c1ff971c784744922a479ae38e5fdbad Mon Sep 17 00:00:00 2001 From: Sachin Joshi Date: Tue, 2 Apr 2019 10:26:09 +0545 Subject: [PATCH] fetch url for OStatus to know if it is a/c or status --- .../controllers/util_controller.ex | 6 +- test/fixtures/httpoison_mock/emelie.atom | 306 ++++++++++++++++++ test/fixtures/httpoison_mock/emelie.json | 106 ------ .../httpoison_mock/webfinger_emelie.json | 36 +++ test/support/http_request_mock.ex | 21 ++ test/web/twitter_api/util_controller_test.exs | 10 + 6 files changed, 377 insertions(+), 108 deletions(-) create mode 100644 test/fixtures/httpoison_mock/emelie.atom delete mode 100644 test/fixtures/httpoison_mock/emelie.json create mode 100644 test/fixtures/httpoison_mock/webfinger_emelie.json diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 7f301a518..2a1c73111 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -103,8 +103,10 @@ def remote_follow(%{assigns: %{user: user}} = conn, %{"acct" => acct}) do end defp is_status?(acct) do - %URI{path: path} = URI.parse(acct) - Regex.match?(~r/\/users\/[^\/]+\/statuses\/([0-9]+)$/, path) + case ActivityPub.fetch_and_contain_remote_object_from_id(acct) do + {:ok, %{"type" => "Note"}} -> true + _ -> false + end end def do_remote_follow(conn, %{ diff --git a/test/fixtures/httpoison_mock/emelie.atom b/test/fixtures/httpoison_mock/emelie.atom new file mode 100644 index 000000000..ddaa1c6ca --- /dev/null +++ b/test/fixtures/httpoison_mock/emelie.atom @@ -0,0 +1,306 @@ + + + https://mastodon.social/users/emelie.atom + emelie 🎨 + 23 / #Sweden / #Artist / #Equestrian / #GameDev + +If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 + 2019-02-04T20:22:19Z + https://files.mastodon.social/accounts/avatars/000/015/657/original/e7163f98280da1a4.png + + https://mastodon.social/users/emelie + http://activitystrea.ms/schema/1.0/person + https://mastodon.social/users/emelie + emelie + emelie@mastodon.social + <p>23 / <a href="https://mastodon.social/tags/sweden" class="mention hashtag" rel="tag">#<span>Sweden</span></a> / <a href="https://mastodon.social/tags/artist" class="mention hashtag" rel="tag">#<span>Artist</span></a> / <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>Equestrian</span></a> / <a href="https://mastodon.social/tags/gamedev" class="mention hashtag" rel="tag">#<span>GameDev</span></a></p><p>If I ain&apos;t spending time with my pets, I&apos;m probably drawing. 🐴 🐱 🐰</p> + + + + emelie + emelie 🎨 + 23 / #Sweden / #Artist / #Equestrian / #GameDev + +If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 + public + + + + + + + https://mastodon.social/users/emelie/statuses/101850331907006641 + 2019-04-01T09:58:50Z + 2019-04-01T09:58:50Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>Me: I&apos;m going to make this vital change to my world building in the morning, no way I&apos;ll forget this, it&apos;s too big of a deal<br />Also me: forgets</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101849626603073336 + 2019-04-01T06:59:28Z + 2019-04-01T06:59:28Z + New status by emelie + http://activitystrea.ms/schema/1.0/comment + http://activitystrea.ms/schema/1.0/post + + <p><span class="h-card"><a href="https://mastodon.social/@Fergant" class="u-url mention">@<span>Fergant</span></a></span> Dom är i stort sett religiös skrift vid det här laget 👏👏</p><p>har dock bara läst svenska översättningen, kanske är dags att jag läser dom på engelska</p> + + + public + + + + + + + https://mastodon.social/users/emelie/statuses/101849580030237068 + 2019-04-01T06:47:37Z + 2019-04-01T06:47:37Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>What&apos;s you people&apos;s favourite fantasy books? Give me some hot tips 🌞</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101849550599949363 + 2019-04-01T06:40:08Z + 2019-04-01T06:40:08Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>Stick them legs out 💃 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> + + + + public + + + + + + https://mastodon.social/users/emelie/statuses/101849191533152720 + 2019-04-01T05:08:49Z + 2019-04-01T05:08:49Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>long 🐱 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> + + + + public + + + + + + https://mastodon.social/users/emelie/statuses/101849165031453009 + 2019-04-01T05:02:05Z + 2019-04-01T05:02:05Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>You gotta take whatever bellyrubbing opportunity you can get before she changes her mind 🦁 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> + + + + public + + + + + + https://mastodon.social/users/emelie/statuses/101846512530748693 + 2019-03-31T17:47:31Z + 2019-03-31T17:47:31Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>Hello look at this boy having a decent haircut for once <a href="https://mastodon.social/tags/mastohorses" class="mention hashtag" rel="tag">#<span>mastohorses</span></a> <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>equestrian</span></a></p> + + + + + public + + + + + + https://mastodon.social/users/emelie/statuses/101846181093805500 + 2019-03-31T16:23:14Z + 2019-03-31T16:23:14Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>Sorry did I disturb the who-is-the-longest-cat competition ? <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> + + + + public + + + + + + https://mastodon.social/users/emelie/statuses/101845897513133849 + 2019-03-31T15:11:07Z + 2019-03-31T15:11:07Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + more earthsea ramblings + <p>I&apos;m re-watching Tales from Earthsea for the first time since I read the books, and that Therru doesn&apos;t squash Cob like a spider, as Orm Embar did is a wasted opportunity tbh</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101841219051533307 + 2019-03-30T19:21:19Z + 2019-03-30T19:21:19Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>I gave my cats some mackerel and they ate it all in 0.3 seconds, and now they won&apos;t stop meowing for more, and I&apos;m tired plz shut up</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101839949762341381 + 2019-03-30T13:58:31Z + 2019-03-30T13:58:31Z + New status by emelie + http://activitystrea.ms/schema/1.0/comment + http://activitystrea.ms/schema/1.0/post + + <p>yet I&apos;m confused about this american dude with a gun, like the heck r ya doin in mah ghibli</p> + + public + + + + + + + https://mastodon.social/users/emelie/statuses/101839928677863590 + 2019-03-30T13:53:09Z + 2019-03-30T13:53:09Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>2 hours into Ni no Kuni 2 and I&apos;ve already sold my soul to this game</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101836329521599438 + 2019-03-29T22:37:51Z + 2019-03-29T22:37:51Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>Pippi Longstocking the original one-punch /man</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101835905282948341 + 2019-03-29T20:49:57Z + 2019-03-29T20:49:57Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>I&apos;ve had so much wine I thought I had a 3rd brother</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101835878059204660 + 2019-03-29T20:43:02Z + 2019-03-29T20:43:02Z + New status by emelie + http://activitystrea.ms/schema/1.0/note + http://activitystrea.ms/schema/1.0/post + + <p>ååååhhh booi</p> + + public + + + + + + https://mastodon.social/users/emelie/statuses/101835848050598939 + 2019-03-29T20:35:24Z + 2019-03-29T20:35:24Z + New status by emelie + http://activitystrea.ms/schema/1.0/comment + http://activitystrea.ms/schema/1.0/post + + <p><span class="h-card"><a href="https://thraeryn.net/@thraeryn" class="u-url mention">@<span>thraeryn</span></a></span> if I spent 1 hour and a half watching this monstrosity, I need to</p> + + + public + + + + + + + https://mastodon.social/users/emelie/statuses/101835823138262290 + 2019-03-29T20:29:04Z + 2019-03-29T20:29:04Z + New status by emelie + http://activitystrea.ms/schema/1.0/comment + http://activitystrea.ms/schema/1.0/post + + medical, fluids mention + <p><span class="h-card"><a href="https://icosahedron.website/@Trev" class="u-url mention">@<span>Trev</span></a></span> *hugs* ✨</p> + + + public + + + + + + diff --git a/test/fixtures/httpoison_mock/emelie.json b/test/fixtures/httpoison_mock/emelie.json deleted file mode 100644 index 2e164ffdf..000000000 --- a/test/fixtures/httpoison_mock/emelie.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/ns/activitystreams", - "https://w3id.org/security/v1", - { - "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", - "toot": "http://joinmastodon.org/ns#", - "featured": { - "@id": "toot:featured", - "@type": "@id" - }, - "alsoKnownAs": { - "@id": "as:alsoKnownAs", - "@type": "@id" - }, - "movedTo": { - "@id": "as:movedTo", - "@type": "@id" - }, - "schema": "http://schema.org#", - "PropertyValue": "schema:PropertyValue", - "value": "schema:value", - "Hashtag": "as:Hashtag", - "Emoji": "toot:Emoji", - "IdentityProof": "toot:IdentityProof", - "focalPoint": { - "@container": "@list", - "@id": "toot:focalPoint" - } - } - ], - "id": "https://mastodon.social/users/emelie", - "type": "Person", - "following": "https://mastodon.social/users/emelie/following", - "followers": "https://mastodon.social/users/emelie/followers", - "inbox": "https://mastodon.social/users/emelie/inbox", - "outbox": "https://mastodon.social/users/emelie/outbox", - "featured": "https://mastodon.social/users/emelie/collections/featured", - "preferredUsername": "emelie", - "name": "emelie 🎨", - "summary": "

23 / #Sweden / #Artist / #Equestrian / #GameDev

If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰

", - "url": "https://mastodon.social/@emelie", - "manuallyApprovesFollowers": false, - "publicKey": { - "id": "https://mastodon.social/users/emelie#main-key", - "owner": "https://mastodon.social/users/emelie", - "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu3CWs1oAJPE3ZJ9sj6Ut\n/Mu+mTE7MOijsQc8/6c73XVVuhIEomiozJIH7l8a7S1n5SYL4UuiwcubSOi7u1bb\nGpYnp5TYhN+Cxvq/P80V4/ncNIPSQzS49it7nSLeG5pA21lGPDA44huquES1un6p\n9gSmbTwngVX9oe4MYuUeh0Z7vijjU13Llz1cRq/ZgPQPgfz+2NJf+VeXnvyDZDYx\nZPVBBlrMl3VoGbu0M5L8SjY35559KCZ3woIvqRolcoHXfgvJMdPcJgSZVYxlCw3d\nA95q9jQcn6s87CPSUs7bmYEQCrDVn5m5NER5TzwBmP4cgJl9AaDVWQtRd4jFZNTx\nlQIDAQAB\n-----END PUBLIC KEY-----\n" - }, - "tag": [ - { - "type": "Hashtag", - "href": "https://mastodon.social/explore/sweden", - "name": "#sweden" - }, - { - "type": "Hashtag", - "href": "https://mastodon.social/explore/gamedev", - "name": "#gamedev" - }, - { - "type": "Hashtag", - "href": "https://mastodon.social/explore/artist", - "name": "#artist" - }, - { - "type": "Hashtag", - "href": "https://mastodon.social/explore/equestrian", - "name": "#equestrian" - } - ], - "attachment": [ - { - "type": "PropertyValue", - "name": "Ko-fi", - "value": "https://ko-fi.com/emeliepng" - }, - { - "type": "PropertyValue", - "name": "Instagram", - "value": "https://www.instagram.com/emelie_png/" - }, - { - "type": "PropertyValue", - "name": "Carrd", - "value": "https://emelie.carrd.co/" - }, - { - "type": "PropertyValue", - "name": "Artstation", - "value": "https://emiri.artstation.com" - } - ], - "endpoints": { - "sharedInbox": "https://mastodon.social/inbox" - }, - "icon": { - "type": "Image", - "mediaType": "image/png", - "url": "https://files.mastodon.social/accounts/avatars/000/015/657/original/e7163f98280da1a4.png" - }, - "image": { - "type": "Image", - "mediaType": "image/png", - "url": "https://files.mastodon.social/accounts/headers/000/015/657/original/847f331f3dd9e38b.png" - } -} diff --git a/test/fixtures/httpoison_mock/webfinger_emelie.json b/test/fixtures/httpoison_mock/webfinger_emelie.json new file mode 100644 index 000000000..0b61cb618 --- /dev/null +++ b/test/fixtures/httpoison_mock/webfinger_emelie.json @@ -0,0 +1,36 @@ +{ + "aliases": [ + "https://mastodon.social/@emelie", + "https://mastodon.social/users/emelie" + ], + "links": [ + { + "href": "https://mastodon.social/@emelie", + "rel": "http://webfinger.net/rel/profile-page", + "type": "text/html" + }, + { + "href": "https://mastodon.social/users/emelie.atom", + "rel": "http://schemas.google.com/g/2010#updates-from", + "type": "application/atom+xml" + }, + { + "href": "https://mastodon.social/users/emelie", + "rel": "self", + "type": "application/activity+json" + }, + { + "href": "https://mastodon.social/api/salmon/15657", + "rel": "salmon" + }, + { + "href": "data:application/magic-public-key,RSA.u3CWs1oAJPE3ZJ9sj6Ut_Mu-mTE7MOijsQc8_6c73XVVuhIEomiozJIH7l8a7S1n5SYL4UuiwcubSOi7u1bbGpYnp5TYhN-Cxvq_P80V4_ncNIPSQzS49it7nSLeG5pA21lGPDA44huquES1un6p9gSmbTwngVX9oe4MYuUeh0Z7vijjU13Llz1cRq_ZgPQPgfz-2NJf-VeXnvyDZDYxZPVBBlrMl3VoGbu0M5L8SjY35559KCZ3woIvqRolcoHXfgvJMdPcJgSZVYxlCw3dA95q9jQcn6s87CPSUs7bmYEQCrDVn5m5NER5TzwBmP4cgJl9AaDVWQtRd4jFZNTxlQ==.AQAB", + "rel": "magic-public-key" + }, + { + "rel": "http://ostatus.org/schema/1.0/subscribe", + "template": "https://mastodon.social/authorize_interaction?uri={uri}" + } + ], + "subject": "acct:emelie@mastodon.social" +} diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 2148bd4e7..d3b547d91 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -52,6 +52,27 @@ def get("https://mastodon.social/users/emelie", _, _, _) do }} end + def get( + "https://mastodon.social/.well-known/webfinger?resource=https://mastodon.social/users/emelie", + _, + _, + _ + ) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/httpoison_mock/webfinger_emelie.json") + }} + end + + def get("https://mastodon.social/users/emelie.atom", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/httpoison_mock/emelie.atom") + }} + end + def get( "https://osada.macgirvin.com/.well-known/webfinger?resource=acct:mike@osada.macgirvin.com", _, diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index f4a3ce501..e4dd97d46 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -180,5 +180,15 @@ test "adds status to pleroma instance if the `acct` is a status", %{conn: conn} assert redirected_to(conn) =~ "/notice/" end + + test "show follow account page if the `acct` is a account link", %{conn: conn} do + response = + get( + conn, + "/ostatus_subscribe?acct=https://mastodon.social/users/emelie" + ) + + assert html_response(response, 200) =~ "Log in to follow" + end end end