diff --git a/app/Util/ActivityPub/Validator/Announce.php b/app/Util/ActivityPub/Validator/Announce.php index c66fedbb2..b6f89eec9 100644 --- a/app/Util/ActivityPub/Validator/Announce.php +++ b/app/Util/ActivityPub/Validator/Announce.php @@ -16,11 +16,11 @@ class Announce { 'required', Rule::in(['Announce']) ], - 'actor' => 'required|url|active_url', + 'actor' => 'required|url', 'published' => 'required|date', 'to' => 'required', 'cc' => 'required', - 'object' => 'required|url|active_url' + 'object' => 'required|url' ])->passes(); return $valid; diff --git a/app/Util/ActivityPub/Validator/Follow.php b/app/Util/ActivityPub/Validator/Follow.php index a9c6ca2ec..b249f7a3e 100644 --- a/app/Util/ActivityPub/Validator/Follow.php +++ b/app/Util/ActivityPub/Validator/Follow.php @@ -16,8 +16,8 @@ class Follow { 'required', Rule::in(['Follow']) ], - 'actor' => 'required|url|active_url', - 'object' => 'required|url|active_url' + 'actor' => 'required|url', + 'object' => 'required|url' ])->passes(); return $valid; diff --git a/tests/Unit/ActivityPub/FollowTest.php b/tests/Unit/ActivityPub/FollowTest.php deleted file mode 100644 index 4edc33a52..000000000 --- a/tests/Unit/ActivityPub/FollowTest.php +++ /dev/null @@ -1,27 +0,0 @@ -mastodon = '{"type":"Follow","signature":{"type":"RsaSignature2017","signatureValue":"Kn1/UkAQGJVaXBfWLAHcnwHg8YMAUqlEaBuYLazAG+pz5hqivsyrBmPV186Xzr+B4ZLExA9+SnOoNx/GOz4hBm0kAmukNSILAsUd84tcJ2yT9zc1RKtembK4WiwOw7li0+maeDN0HaB6t+6eTqsCWmtiZpprhXD8V1GGT8yG7X24fQ9oFGn+ng7lasbcCC0988Y1eGqNe7KryxcPuQz57YkDapvtONzk8gyLTkZMV4De93MyRHq6GVjQVIgtiYabQAxrX6Q8C+4P/jQoqdWJHEe+MY5JKyNaT/hMPt2Md1ok9fZQBGHlErk22/zy8bSN19GdG09HmIysBUHRYpBLig==","creator":"http://mastodon.example.org/users/admin#main-key","created":"2018-02-17T13:29:31Z"},"object":"http://localtesting.pleroma.lol/users/lain","nickname":"lain","id":"http://mastodon.example.org/users/admin#follows/2","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"}]}'; - - } - - /** @test */ - public function validateMastodonFollowObject() - { - $mastodon = json_decode($this->mastodon, true); - $mastodon = Helpers::validateObject($mastodon); - $this->assertTrue($mastodon); - } -} \ No newline at end of file diff --git a/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php b/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php index 81f631df9..cdf998afb 100644 --- a/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php +++ b/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php @@ -39,6 +39,42 @@ class AcceptVerbTest extends TestCase 'object' => 'https://example.org/u/alice' ] ]; + $this->mastodonAccept = [ + "@context" => [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + [ + "toot" => "https://joinmastodon.org/ns#", + "sensitive" => "as:sensitive", + "ostatus" => "https://ostatus.org#", + "movedTo" => "as:movedTo", + "manuallyApprovesFollowers" => "as:manuallyApprovesFollowers", + "inReplyToAtomUri" => "ostatus:inReplyToAtomUri", + "conversation" => "ostatus:conversation", + "atomUri" => "ostatus:atomUri", + "Hashtag" => "as:Hashtag", + "Emoji" => "toot:Emoji", + ], + ], + + "type" => "Accept", + + "object" => [ + "type" => "Follow", + "object" => "https://mastodon.example.org/users/admin", + "id" => "https://pixelfed.dev/users/dsup#follows/4", + "actor" => "https://pixelfed.dev/users/dsup", + ], + "nickname" => "dsup", + "id" => "https://mastodon.example.org/users/admin#accepts/follows/4", + "actor" => "https://mastodon.example.org/users/admin", + "signature" => [ + "type" => "RsaSignature2017", + "signatureValue" => "rBzK4Kqhd4g7HDS8WE5oRbWQb2R+HF/6awbUuMWhgru/xCODT0SJWSri0qWqEO4fPcpoUyz2d25cw6o+iy9wiozQb3hQNnu69AR+H5Mytc06+g10KCHexbGhbAEAw/7IzmeXELHUbaqeduaDIbdt1zw4RkwLXdqgQcGXTJ6ND1wM3WMHXQCK1m0flasIXFoBxpliPAGiElV8s0+Ltuh562GvflG3kB3WO+j+NaR0ZfG5G9N88xMj9UQlCKit5gpAE5p6syUsCU2WGBHywTumv73i3OVTIFfq+P9AdMsRuzw1r7zoKEsthW4aOzLQDi01ZjvdBz8zH6JnjDU7SMN/Ig==", + "creator" => "https://mastodon.example.org/users/admin#main-key", + "created" => "2018-02-17T14:36:41Z", + ], + ]; } /** @test */ @@ -52,4 +88,10 @@ class AcceptVerbTest extends TestCase { $this->assertFalse(Accept::validate($this->invalidAccept)); } + + /** @test */ + public function mastodon_accept() + { + $this->assertTrue(Accept::validate($this->mastodonAccept)); + } } diff --git a/tests/Unit/ActivityPub/Verb/AnnounceTest.php b/tests/Unit/ActivityPub/Verb/AnnounceTest.php index 7b7eef14b..520e9bd36 100644 --- a/tests/Unit/ActivityPub/Verb/AnnounceTest.php +++ b/tests/Unit/ActivityPub/Verb/AnnounceTest.php @@ -126,6 +126,44 @@ class AnnounceTest extends TestCase ], "object" => "https://example.org/p/bob/100000000000000", ]; + + $this->mastodonAnnounce = [ + "type" => "Announce", + "to" => [ + "https://www.w3.org/ns/activitystreams#Public", + ], + "signature" => [ + "type" => "RsaSignature2017", + "signatureValue" => "T95DRE0eAligvMuRMkQA01lsoz2PKi4XXF+cyZ0BqbrO12p751TEWTyyRn5a+HH0e4kc77EUhQVXwMq80WAYDzHKVUTf2XBJPBa68vl0j6RXw3+HK4ef5hR4KWFNBU34yePS7S1fEmc1mTG4Yx926wtmZwDpEMTp1CXOeVEjCYzmdyHpepPPH2ZZettiacmPRSqBLPGWZoot7kH/SioIdnrMGY0I7b+rqkIdnnEcdhu9N1BKPEO9Sr+KmxgAUiidmNZlbBXX6gCxp8BiIdH4ABsIcwoDcGNkM5EmWunGW31LVjsEQXhH5c1Wly0ugYYPCg/0eHLNBOhKkY/teSM8Lg==", + "creator" => "https://mastodon.example.org/users/admin#main-key", + "created" => "2018-02-17T19:39:15Z", + ], + "published" => "2018-02-17T19:39:15Z", + "object" => "https://mastodon.example.org/@admin/99541947525187367", + "id" => "https://mastodon.example.org/users/admin/statuses/99542391527669785/activity", + "cc" => [ + "https://mastodon.example.org/users/admin", + "https://mastodon.example.org/users/admin/followers", + ], + "atomUri" => "https://mastodon.example.org/users/admin/statuses/99542391527669785/activity", + "actor" => "https://mastodon.example.org/users/admin", + "@context" => [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + [ + "toot" => "https://joinmastodon.org/ns#", + "sensitive" => "as:sensitive", + "ostatus" => "https://ostatus.org#", + "movedTo" => "as:movedTo", + "manuallyApprovesFollowers" => "as:manuallyApprovesFollowers", + "inReplyToAtomUri" => "ostatus:inReplyToAtomUri", + "conversation" => "ostatus:conversation", + "atomUri" => "ostatus:atomUri", + "Hashtag" => "as:Hashtag", + "Emoji" => "toot:Emoji", + ], + ], + ]; } /** @test */ @@ -165,4 +203,10 @@ class AnnounceTest extends TestCase $this->assertFalse(Announce::validate($this->invalidActor)); $this->assertFalse(Announce::validate($this->invalidActor2)); } + + /** @test */ + public function mastodon_announce() + { + $this->assertTrue(Announce::validate($this->mastodonAnnounce)); + } } diff --git a/tests/Unit/ActivityPub/Verb/FollowTest.php b/tests/Unit/ActivityPub/Verb/FollowTest.php new file mode 100644 index 000000000..58f2b96d1 --- /dev/null +++ b/tests/Unit/ActivityPub/Verb/FollowTest.php @@ -0,0 +1,53 @@ +basicFollow = [ + "type" => "Follow", + "signature" => [ + "type" => "RsaSignature2017", + "signatureValue" => "Kn1/UkAQGJVaXBfWLAHcnwHg8YMAUqlEaBuYLazAG+pz5hqivsyrBmPV186Xzr+B4ZLExA9+SnOoNx/GOz4hBm0kAmukNSILAsUd84tcJ2yT9zc1RKtembK4WiwOw7li0+maeDN0HaB6t+6eTqsCWmtiZpprhXD8V1GGT8yG7X24fQ9oFGn+ng7lasbcCC0988Y1eGqNe7KryxcPuQz57YkDapvtONzk8gyLTkZMV4De93MyRHq6GVjQVIgtiYabQAxrX6Q8C+4P/jQoqdWJHEe+MY5JKyNaT/hMPt2Md1ok9fZQBGHlErk22/zy8bSN19GdG09HmIysBUHRYpBLig==", + "creator" => "http://mastodon.example.org/users/admin#main-key", + "created" => "2018-02-17T13:29:31Z", + ], + "object" => "http://pixelfed.dev/users/dsup", + "nickname" => "dsup", + "id" => "http://mastodon.example.org/users/admin#follows/2", + "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", + ], + ], + ]; + } + + /** @test */ + public function basic_follow() + { + $this->assertTrue(Follow::validate($this->basicFollow)); + } +} \ No newline at end of file