diff --git a/app/Console/Commands/CloudMediaMigrate.php b/app/Console/Commands/CloudMediaMigrate.php index e1cad9313..0f2d177b8 100644 --- a/app/Console/Commands/CloudMediaMigrate.php +++ b/app/Console/Commands/CloudMediaMigrate.php @@ -66,10 +66,13 @@ class CloudMediaMigrate extends Command try { MediaStorageService::store($media); } catch (FileNotFoundException $e) { + $this->error('Error migrating media ' . $media->id . ' to cloud storage: ' . $e->getMessage()); return; } catch (NotFoundHttpException $e) { + $this->error('Error migrating media ' . $media->id . ' to cloud storage: ' . $e->getMessage()); return; } catch (\Exception $e) { + $this->error('Error migrating media ' . $media->id . ' to cloud storage: ' . $e->getMessage()); return; } } diff --git a/app/Console/Commands/UserAdmin.php b/app/Console/Commands/UserAdmin.php index efdfbdce8..8a485c52b 100644 --- a/app/Console/Commands/UserAdmin.php +++ b/app/Console/Commands/UserAdmin.php @@ -39,7 +39,11 @@ class UserAdmin extends Command public function handle() { $id = $this->argument('id'); - $user = User::whereUsername($id)->orWhere('id', $id)->first(); + if(ctype_digit($id) == true) { + $user = User::find($id); + } else { + $user = User::whereUsername($id)->first(); + } if(!$user) { $this->error('Could not find any user with that username or id.'); exit; diff --git a/app/Console/Commands/UserShow.php b/app/Console/Commands/UserShow.php index d72bf8236..f572f731b 100644 --- a/app/Console/Commands/UserShow.php +++ b/app/Console/Commands/UserShow.php @@ -39,7 +39,11 @@ class UserShow extends Command public function handle() { $id = $this->argument('id'); - $user = User::whereUsername($id)->orWhere('id', $id)->first(); + if(ctype_digit($id) == true) { + $user = User::find($id); + } else { + $user = User::whereUsername($id)->first(); + } if(!$user) { $this->error('Could not find any user with that username or id.'); exit; diff --git a/app/Console/Commands/UserSuspend.php b/app/Console/Commands/UserSuspend.php index 17d44d2d5..5224932de 100644 --- a/app/Console/Commands/UserSuspend.php +++ b/app/Console/Commands/UserSuspend.php @@ -39,7 +39,11 @@ class UserSuspend extends Command public function handle() { $id = $this->argument('id'); - $user = User::whereUsername($id)->orWhere('id', $id)->first(); + if(ctype_digit($id) == true) { + $user = User::find($id); + } else { + $user = User::whereUsername($id)->first(); + } if(!$user) { $this->error('Could not find any user with that username or id.'); exit; diff --git a/app/Console/Commands/UserUnsuspend.php b/app/Console/Commands/UserUnsuspend.php index afb6dee6a..8a9d039e9 100644 --- a/app/Console/Commands/UserUnsuspend.php +++ b/app/Console/Commands/UserUnsuspend.php @@ -39,7 +39,11 @@ class UserUnsuspend extends Command public function handle() { $id = $this->argument('id'); - $user = User::whereUsername($id)->orWhere('id', $id)->first(); + if(ctype_digit($id) == true) { + $user = User::find($id); + } else { + $user = User::whereUsername($id)->first(); + } if(!$user) { $this->error('Could not find any user with that username or id.'); exit; diff --git a/app/Http/Controllers/ContactController.php b/app/Http/Controllers/ContactController.php index 71b7f2004..15a8958de 100644 --- a/app/Http/Controllers/ContactController.php +++ b/app/Http/Controllers/ContactController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Auth; use App\Contact; use App\Jobs\ContactPipeline\ContactPipeline; +use App\Rules\MaxMultiLine; class ContactController extends Controller { @@ -21,7 +22,7 @@ class ContactController extends Controller abort_if(!Auth::check(), 403); $this->validate($request, [ - 'message' => 'required|string|min:5|max:500', + 'message' => ['required', 'string', 'min:5', new MaxMultiLine('500')], 'request_response' => 'string|max:3' ]); diff --git a/app/Rules/MaxMultiLine.php b/app/Rules/MaxMultiLine.php new file mode 100644 index 000000000..8d3d7654c --- /dev/null +++ b/app/Rules/MaxMultiLine.php @@ -0,0 +1,34 @@ +maxCharacters = $maxCharacters; + } + + /** + * Run the validation rule. + * + * @param string $attribute + * @param mixed $value + * @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail + * @return void + */ + public function __invoke($attribute, $value, $fail) + { + $realCount = Str::length($value) - Str::substrCount($value, "\r\n"); + + if($realCount > $this->maxCharacters) + { + $fail('validation.max.string')->translate(['max' => $this->maxCharacters]); + } + } +} diff --git a/config/mail.php b/config/mail.php index 0951a33fd..4baa90ec8 100644 --- a/config/mail.php +++ b/config/mail.php @@ -85,8 +85,21 @@ return [ */ 'username' => env('MAIL_USERNAME'), - 'password' => env('MAIL_PASSWORD'), + + + /* + |-------------------------------------------------------------------------- + | SMTP EHLO Domain + |-------------------------------------------------------------------------- + | + | Some SMTP servers require to present a known domain in order to + | allow sending through its relay. (ie: Google Workspace) + | This will use the MAIL_SMTP_EHLO env variable to avoid the 421 error + | if not present by authenticating the sender domain instead the host. + | + */ + 'local_domain' => env('MAIL_EHLO_DOMAIN'), /* |-------------------------------------------------------------------------- diff --git a/resources/views/atom/user.blade.php b/resources/views/atom/user.blade.php index 792dd7466..b6f7cb4e8 100644 --- a/resources/views/atom/user.blade.php +++ b/resources/views/atom/user.blade.php @@ -1,32 +1,36 @@ ` won't get parsed as short tags */ - ''.PHP_EOL +/* Using an echo tag here so the `` won't get parsed as short tags */ +'' . PHP_EOL ?> - {{$permalink}} - {{$profile['username']}} on Pixelfed - {{$profile['note']}} - {{$profile['created_at']}} - - {{$profile['url']}} - {{$profile['url']}} - - - -@foreach($items as $item) - {{ $item['content'] ? strip_tags($item['content']) : "No caption" }} - + {{$permalink}} + {{$profile['username']}} on Pixelfed + {{$profile['note']}} + {{$items[0]['created_at']}} + + {{$profile['username']}} + {{$profile['url']}} + + + + @foreach($items as $item) + {{ $item['url'] }} + {{ $item['content_text'] ? $item['content_text'] : "No caption" }} + {{ $item['created_at'] }} - + {{$profile['username']}} + {{$profile['url']}} - - + iteration}}" src="{{ $item['media_attachments'][0]['url'] }}" alt="{{ $item['media_attachments'][0]['description'] }}">

{{ $item['content'] }}

- ]]> -
- {{ $item['created_at'] }} + ]]> + + + {{ $item['content'] }} +
-@endforeach + @endforeach
diff --git a/resources/views/site/contact.blade.php b/resources/views/site/contact.blade.php index 7baaad61d..984752f30 100644 --- a/resources/views/site/contact.blade.php +++ b/resources/views/site/contact.blade.php @@ -24,7 +24,7 @@ @csrf
- + 0/500
diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php index 60a3e8ca2..61aa9df77 100644 --- a/tests/CreatesApplication.php +++ b/tests/CreatesApplication.php @@ -3,6 +3,7 @@ namespace Tests; use Illuminate\Contracts\Console\Kernel; +use Illuminate\Foundation\Application; use Illuminate\Support\Facades\Hash; trait CreatesApplication @@ -10,11 +11,11 @@ trait CreatesApplication /** * Creates the application. * - * @return \Illuminate\Foundation\Application + * @return Application */ public function createApplication() { - $app = require __DIR__.'/../bootstrap/app.php'; + $app = require __DIR__ . '/../bootstrap/app.php'; $app->make(Kernel::class)->bootstrap(); diff --git a/tests/Feature/InstalledTest.php b/tests/Feature/InstalledTest.php index 0a80ede22..890acfbdf 100644 --- a/tests/Feature/InstalledTest.php +++ b/tests/Feature/InstalledTest.php @@ -3,19 +3,17 @@ namespace Tests\Feature; use Tests\TestCase; -use Illuminate\Foundation\Testing\RefreshDatabase; -use Illuminate\Foundation\Testing\WithoutMiddleware; class InstalledTest extends TestCase { - - /** @test */ - public function nodeinfo_api() - { - $response = $this->get('/.well-known/nodeinfo'); - $response->assertJson([ - 'links' => [ - ['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0'], - ], ]); - } + /** @test */ + public function nodeinfo_api(): void + { + $response = $this->get('/.well-known/nodeinfo'); + $response->assertJson([ + 'links' => [ + ['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0'], + ], + ]); + } } diff --git a/tests/Feature/LoginTest.php b/tests/Feature/LoginTest.php index c39a070e9..2b03ab7e2 100644 --- a/tests/Feature/LoginTest.php +++ b/tests/Feature/LoginTest.php @@ -3,17 +3,14 @@ namespace Tests\Feature; use Tests\TestCase; -use Illuminate\Foundation\Testing\RefreshDatabase; -use Illuminate\Foundation\Testing\WithoutMiddleware; -use App\User; class LoginTest extends TestCase { - /** @test */ - public function view_login_page() - { - $response = $this->get('login'); + /** @test */ + public function view_login_page() + { + $response = $this->get('login'); - $response->assertSee('Forgot Password'); - } -} \ No newline at end of file + $response->assertSee('Forgot Password'); + } +} diff --git a/tests/Unit/APAnnounceStrategyTest.php b/tests/Unit/APAnnounceStrategyTest.php index 30b2bf1e3..12367c3a6 100644 --- a/tests/Unit/APAnnounceStrategyTest.php +++ b/tests/Unit/APAnnounceStrategyTest.php @@ -2,85 +2,83 @@ namespace Tests\Unit; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Helpers; +use Tests\TestCase; class APAnnounceStrategyTest extends TestCase { - public function setUp(): void - { - parent::setUp(); + public function setUp(): void + { + parent::setUp(); - $this->invalid = [ - 'id' => 'test', - 'type' => 'Announce', - 'actor' => null, - 'published' => '', - 'to' => ['test'], - 'cc' => 'test', - 'object' => 'test' - ]; + $this->invalid = [ + 'id' => 'test', + 'type' => 'Announce', + 'actor' => null, + 'published' => '', + 'to' => ['test'], + 'cc' => 'test', + 'object' => 'test' + ]; - $this->mastodon = json_decode('{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":{"@id":"as:movedTo","@type":"@id"},"Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":{"@id":"toot:featured","@type":"@id"},"schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity","type":"Announce","actor":"https://mastodon.social/users/dansup","published":"2018-09-25T05:03:49Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://pleroma.site/users/pixeldev","https://mastodon.social/users/dansup/followers"],"object":"https://pleroma.site/objects/68b5c876-f52b-4819-8d81-de6839d73fbc","atomUri":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity"}', true); + $this->mastodon = json_decode('{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":{"@id":"as:movedTo","@type":"@id"},"Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":{"@id":"toot:featured","@type":"@id"},"schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity","type":"Announce","actor":"https://mastodon.social/users/dansup","published":"2018-09-25T05:03:49Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://pleroma.site/users/pixeldev","https://mastodon.social/users/dansup/followers"],"object":"https://pleroma.site/objects/68b5c876-f52b-4819-8d81-de6839d73fbc","atomUri":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity"}', true); - $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://www.w3.org/ns/activitystreams#Public"],"context":"tag:mastodon.social,2018-10-14:objectId=59146153:objectType=Conversation","context_id":12325955,"id":"https://pleroma.site/activities/db2273eb-d504-4e3a-8f74-c343d069755a","object":"https://mastodon.social/users/dansup/statuses/100891324792793720","published":"2018-10-14T01:22:18.554227Z","to":["https://pleroma.site/users/pixeldev/followers","https://mastodon.social/users/dansup"],"type":"Announce"}', true); - } + $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://www.w3.org/ns/activitystreams#Public"],"context":"tag:mastodon.social,2018-10-14:objectId=59146153:objectType=Conversation","context_id":12325955,"id":"https://pleroma.site/activities/db2273eb-d504-4e3a-8f74-c343d069755a","object":"https://mastodon.social/users/dansup/statuses/100891324792793720","published":"2018-10-14T01:22:18.554227Z","to":["https://pleroma.site/users/pixeldev/followers","https://mastodon.social/users/dansup"],"type":"Announce"}', true); + } - public function testBasicValidation() - { - $this->assertFalse(Helpers::validateObject($this->invalid)); - } + public function testBasicValidation() + { + $this->assertFalse(Helpers::validateObject($this->invalid)); + } - public function testMastodonValidation() - { - $this->assertTrue(Helpers::validateObject($this->mastodon)); - } + public function testMastodonValidation() + { + $this->assertTrue(Helpers::validateObject($this->mastodon)); + } - public function testPleromaValidation() - { - $this->assertTrue(Helpers::validateObject($this->pleroma)); - } + public function testPleromaValidation() + { + $this->assertTrue(Helpers::validateObject($this->pleroma)); + } - public function testMastodonAudienceScope() - { - $scope = Helpers::normalizeAudience($this->mastodon, false); - $actual = [ - "to" => [], - "cc" => [ - "https://pleroma.site/users/pixeldev", - "https://mastodon.social/users/dansup/followers", - ], - "scope" => "public", - ]; + public function testMastodonAudienceScope() + { + $scope = Helpers::normalizeAudience($this->mastodon, false); + $actual = [ + 'to' => [], + 'cc' => [ + 'https://pleroma.site/users/pixeldev', + 'https://mastodon.social/users/dansup/followers', + ], + 'scope' => 'public', + ]; - $this->assertEquals($scope, $actual); - } + $this->assertEquals($scope, $actual); + } - public function testPleromaAudienceScope() - { - $scope = Helpers::normalizeAudience($this->pleroma, false); - $actual = [ - "to" => [ - "https://pleroma.site/users/pixeldev/followers", - "https://mastodon.social/users/dansup", - ], - "cc" => [], - "scope" => "unlisted", - ]; + public function testPleromaAudienceScope() + { + $scope = Helpers::normalizeAudience($this->pleroma, false); + $actual = [ + 'to' => [ + 'https://pleroma.site/users/pixeldev/followers', + 'https://mastodon.social/users/dansup', + ], + 'cc' => [], + 'scope' => 'unlisted', + ]; - $this->assertEquals($scope, $actual); - } + $this->assertEquals($scope, $actual); + } - public function testInvalidAudienceScope() - { - $scope = Helpers::normalizeAudience($this->invalid, false); - $actual = [ - 'to' => [], - 'cc' => [], - 'scope' => 'private' - ]; - $this->assertEquals($scope, $actual); - } + public function testInvalidAudienceScope() + { + $scope = Helpers::normalizeAudience($this->invalid, false); + $actual = [ + 'to' => [], + 'cc' => [], + 'scope' => 'private' + ]; + $this->assertEquals($scope, $actual); + } } diff --git a/tests/Unit/ActivityPub/AudienceScopeTest.php b/tests/Unit/ActivityPub/AudienceScopeTest.php index 5ff125f1d..8d3a4379c 100644 --- a/tests/Unit/ActivityPub/AudienceScopeTest.php +++ b/tests/Unit/ActivityPub/AudienceScopeTest.php @@ -2,85 +2,85 @@ namespace Tests\Unit\ActivityPub; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Helpers; +use Tests\TestCase; class AudienceScopeTest extends TestCase { - public function setUp(): void - { - parent::setUp(); + protected array $invalid; - $this->invalid = [ - 'id' => 'test', - 'type' => 'Announce', - 'actor' => null, - 'published' => '', - 'to' => ['test'], - 'cc' => 'test', - 'object' => 'test' - ]; + public function setUp(): void + { + parent::setUp(); - $this->mastodon = json_decode('{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":{"@id":"as:movedTo","@type":"@id"},"Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":{"@id":"toot:featured","@type":"@id"},"schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity","type":"Announce","actor":"https://mastodon.social/users/dansup","published":"2018-09-25T05:03:49Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://pleroma.site/users/pixeldev","https://mastodon.social/users/dansup/followers"],"object":"https://pleroma.site/objects/68b5c876-f52b-4819-8d81-de6839d73fbc","atomUri":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity"}', true); + $this->invalid = [ + 'id' => 'test', + 'type' => 'Announce', + 'actor' => null, + 'published' => '', + 'to' => ['test'], + 'cc' => 'test', + 'object' => 'test' + ]; - $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://www.w3.org/ns/activitystreams#Public"],"context":"tag:mastodon.social,2018-10-14:objectId=59146153:objectType=Conversation","context_id":12325955,"id":"https://pleroma.site/activities/db2273eb-d504-4e3a-8f74-c343d069755a","object":"https://mastodon.social/users/dansup/statuses/100891324792793720","published":"2018-10-14T01:22:18.554227Z","to":["https://pleroma.site/users/pixeldev/followers","https://mastodon.social/users/dansup"],"type":"Announce"}', true); - } + $this->mastodon = json_decode('{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":{"@id":"as:movedTo","@type":"@id"},"Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":{"@id":"toot:featured","@type":"@id"},"schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity","type":"Announce","actor":"https://mastodon.social/users/dansup","published":"2018-09-25T05:03:49Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://pleroma.site/users/pixeldev","https://mastodon.social/users/dansup/followers"],"object":"https://pleroma.site/objects/68b5c876-f52b-4819-8d81-de6839d73fbc","atomUri":"https://mastodon.social/users/dansup/statuses/100784657480587830/activity"}', true); - public function testBasicValidation() - { - $this->assertFalse(Helpers::validateObject($this->invalid)); - } + $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://www.w3.org/ns/activitystreams#Public"],"context":"tag:mastodon.social,2018-10-14:objectId=59146153:objectType=Conversation","context_id":12325955,"id":"https://pleroma.site/activities/db2273eb-d504-4e3a-8f74-c343d069755a","object":"https://mastodon.social/users/dansup/statuses/100891324792793720","published":"2018-10-14T01:22:18.554227Z","to":["https://pleroma.site/users/pixeldev/followers","https://mastodon.social/users/dansup"],"type":"Announce"}', true); + } - public function testMastodonValidation() - { - $this->assertTrue(Helpers::validateObject($this->mastodon)); - } + public function testBasicValidation() + { + $this->assertFalse(Helpers::validateObject($this->invalid)); + } - public function testPleromaValidation() - { - $this->assertTrue(Helpers::validateObject($this->pleroma)); - } + public function testMastodonValidation() + { + $this->assertTrue(Helpers::validateObject($this->mastodon)); + } - public function testMastodonAudienceScope() - { - $scope = Helpers::normalizeAudience($this->mastodon, false); - $actual = [ - "to" => [], - "cc" => [ - "https://pleroma.site/users/pixeldev", - "https://mastodon.social/users/dansup/followers", - ], - "scope" => "public", - ]; + public function testPleromaValidation() + { + $this->assertTrue(Helpers::validateObject($this->pleroma)); + } - $this->assertEquals($scope, $actual); - } + public function testMastodonAudienceScope() + { + $scope = Helpers::normalizeAudience($this->mastodon, false); + $actual = [ + 'to' => [], + 'cc' => [ + 'https://pleroma.site/users/pixeldev', + 'https://mastodon.social/users/dansup/followers', + ], + 'scope' => 'public', + ]; - public function testPleromaAudienceScope() - { - $scope = Helpers::normalizeAudience($this->pleroma, false); - $actual = [ - "to" => [ - "https://pleroma.site/users/pixeldev/followers", - "https://mastodon.social/users/dansup", - ], - "cc" => [], - "scope" => "unlisted", - ]; + $this->assertEquals($scope, $actual); + } - $this->assertEquals($scope, $actual); - } + public function testPleromaAudienceScope() + { + $scope = Helpers::normalizeAudience($this->pleroma, false); + $actual = [ + 'to' => [ + 'https://pleroma.site/users/pixeldev/followers', + 'https://mastodon.social/users/dansup', + ], + 'cc' => [], + 'scope' => 'unlisted', + ]; - public function testInvalidAudienceScope() - { - $scope = Helpers::normalizeAudience($this->invalid, false); - $actual = [ - 'to' => [], - 'cc' => [], - 'scope' => 'private' - ]; - $this->assertEquals($scope, $actual); - } + $this->assertEquals($scope, $actual); + } + + public function testInvalidAudienceScope() + { + $scope = Helpers::normalizeAudience($this->invalid, false); + $actual = [ + 'to' => [], + 'cc' => [], + 'scope' => 'private' + ]; + $this->assertEquals($scope, $actual); + } } diff --git a/tests/Unit/ActivityPub/NoteAttachmentTest.php b/tests/Unit/ActivityPub/NoteAttachmentTest.php index f7a8910b2..ffce4b633 100644 --- a/tests/Unit/ActivityPub/NoteAttachmentTest.php +++ b/tests/Unit/ActivityPub/NoteAttachmentTest.php @@ -4,41 +4,52 @@ namespace Tests\Unit\ActivityPub; use App\Util\ActivityPub\Helpers; use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; class NoteAttachmentTest extends TestCase { + protected array $pixelfed; + protected array $pleroma; + protected array $mastodon; + protected array $invalidType; + protected array $invalidMime; - public function setUp(): void - { - parent::setUp(); - $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://pleroma.site/users/pixeldev/followers"],"context":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","context_id":8651628,"id":"https://pleroma.site/activities/65b2c43f-f33e-438e-b141-4e2047b43012","object":{"actor":"https://pleroma.site/users/pixeldev","announcement_count":2,"announcements":["https://playvicious.social/users/jalcine","https://mastodon.social/users/dansup"],"attachment":[{"mediaType":"image/png","name":"Screen Shot 2018-09-08 at 10.59.38 PM.png","type":"Document","url":"https://s3.wasabisys.com/pleroma-site/1c49e1f9-1187-404d-a063-1b37ecec44e9/Screen Shot 2018-09-08 at 10.59.38 PM.png"},{"mediaType":"image/jpeg","name":"archer-danger-zone.jpg","type":"Document","url":"https://s3.wasabisys.com/pleroma-site/cd70cdb6-0148-4dcb-bac6-11fd4aa59834/archer-danger-zone.jpg"}],"attributedTo":"https://pleroma.site/users/pixeldev","cc":["https://pleroma.site/users/pixeldev/followers"],"content":"New middleware for specific actions, acts like sudo requiring periodic password verification. #dangerZone","context":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","context_id":8651628,"conversation":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","emoji":{},"id":"https://pleroma.site/objects/b7576ec9-ae2b-4076-a426-0d8a65b23876","published":"2018-09-09T05:05:53.763752Z","sensitive":false,"summary":"","tag":[{"href":"https://pleroma.site/tags/dangerzone","name":"#dangerzone","type":"Hashtag"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Note"},"published":"2018-09-09T05:05:53.749866Z","to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Create"}', true, 9); + public function setUp(): void + { + parent::setUp(); - $this->mastodon = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"Document","mediaType":"image/jpeg","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); + $this->pixelfed = json_decode('{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"sc":"http://schema.org#","Hashtag":"as:Hashtag","sensitive":"as:sensitive","commentsEnabled":"sc:Boolean","capabilities":{"announce":{"@type":"@id"},"like":{"@type":"@id"},"reply":{"@type":"@id"}},"toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji"}],"id":"https://pixelfed.social/p/dansup/2","type":"Note","summary":null,"content":"This was my first IG post too. #mazda #zoomzoom","inReplyTo":null,"published":"2018-06-01T05:16:51+00:00","url":"https://pixelfed.social/p/dansup/2","attributedTo":"https://pixelfed.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://pixelfed.social/users/dansup/followers"],"sensitive":false,"attachment":[{"type":"Image","mediaType":"image/jpeg","url":"https://pixelfed.social/storage/m/e64c75f2f4e9a621bb7c43ec9b04a165add6493b/b87fd76cbce4a613a9b9cba20f354709e67caf25/B4SHeEqWsj5t7qCIRzm7nvfCAtm31J8o12Ji1A2x.jpeg","name":null}],"tag":[{"type":"Hashtag","href":"https://pixelfed.social/discover/tags/mazda","name":"#mazda"},{"type":"Hashtag","href":"https://pixelfed.social/discover/tags/zoomzoom","name":"#zoomzoom"}],"commentsEnabled":false,"capabilities":{"announce":"https://www.w3.org/ns/activitystreams#Public","like":"https://www.w3.org/ns/activitystreams#Public","reply":null},"location":null}', true, 9); - $this->invalidType = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"NotDocument","mediaType":"image/jpeg","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); + $this->pleroma = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","actor":"https://pleroma.site/users/pixeldev","cc":["https://pleroma.site/users/pixeldev/followers"],"context":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","context_id":8651628,"id":"https://pleroma.site/activities/65b2c43f-f33e-438e-b141-4e2047b43012","object":{"actor":"https://pleroma.site/users/pixeldev","announcement_count":2,"announcements":["https://playvicious.social/users/jalcine","https://mastodon.social/users/dansup"],"attachment":[{"mediaType":"image/png","name":"Screen Shot 2018-09-08 at 10.59.38 PM.png","type":"Document","url":"https://s3.wasabisys.com/pleroma-site/1c49e1f9-1187-404d-a063-1b37ecec44e9/Screen Shot 2018-09-08 at 10.59.38 PM.png"},{"mediaType":"image/jpeg","name":"archer-danger-zone.jpg","type":"Document","url":"https://s3.wasabisys.com/pleroma-site/cd70cdb6-0148-4dcb-bac6-11fd4aa59834/archer-danger-zone.jpg"}],"attributedTo":"https://pleroma.site/users/pixeldev","cc":["https://pleroma.site/users/pixeldev/followers"],"content":"New middleware for specific actions, acts like sudo requiring periodic password verification. #dangerZone","context":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","context_id":8651628,"conversation":"https://pleroma.site/contexts/cbe919c6-238e-4e5d-9065-fcb3c312b56a","emoji":{},"id":"https://pleroma.site/objects/b7576ec9-ae2b-4076-a426-0d8a65b23876","published":"2018-09-09T05:05:53.763752Z","sensitive":false,"summary":"","tag":[{"href":"https://pleroma.site/tags/dangerzone","name":"#dangerzone","type":"Hashtag"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Note"},"published":"2018-09-09T05:05:53.749866Z","to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Create"}', true, 9); - $this->invalidMime = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"Document","mediaType":"image/webp","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); - } + $this->mastodon = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"Document","mediaType":"image/jpeg","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); - public function testMastodon() - { - $valid = Helpers::verifyAttachments($this->mastodon); - $this->assertTrue($valid); - } + $this->invalidType = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"NotDocument","mediaType":"image/jpeg","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); - public function testInvalidAttachmentType() - { - $valid = Helpers::verifyAttachments($this->invalidType); - $this->assertFalse($valid); - } + $this->invalidMime = json_decode('{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791/activity","type":"Create","actor":"https://mastodon.social/users/dansup","published":"2018-10-13T18:43:33Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"object":{"id":"https://mastodon.social/users/dansup/statuses/100889802384218791","type":"Note","summary":null,"inReplyTo":null,"published":"2018-10-13T18:43:33Z","url":"https://mastodon.social/@dansup/100889802384218791","attributedTo":"https://mastodon.social/users/dansup","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.social/users/dansup/followers"],"sensitive":false,"atomUri":"https://mastodon.social/users/dansup/statuses/100889802384218791","inReplyToAtomUri":null,"conversation":"tag:mastodon.social,2018-10-13:objectId=59103420:objectType=Conversation","content":"

Good Morning! #coffee

","contentMap":{"en":"

Good Morning! #coffee

"},"attachment":[{"type":"Document","mediaType":"image/webp","url":"https://files.mastodon.social/media_attachments/files/007/110/573/original/96a196885a77c9a4.jpg","name":null}],"tag":[{"type":"Hashtag","href":"https://mastodon.social/tags/coffee","name":"#coffee"}]}}', true, 9); + } - public function testInvalidMimeType() - { - $valid = Helpers::verifyAttachments($this->invalidMime); - $this->assertFalse($valid); - } + public function testPixelfed() + { + $valid = Helpers::verifyAttachments($this->pixelfed); + $this->assertTrue($valid); + } + public function testMastodon() + { + $valid = Helpers::verifyAttachments($this->mastodon); + $this->assertTrue($valid); + } + + public function testInvalidAttachmentType() + { + $valid = Helpers::verifyAttachments($this->invalidType); + $this->assertFalse($valid); + } + + public function testInvalidMimeType() + { + $valid = Helpers::verifyAttachments($this->invalidMime); + $this->assertFalse($valid); + } } diff --git a/tests/Unit/ActivityPub/RemoteFollowTest.php b/tests/Unit/ActivityPub/RemoteFollowTest.php index ad7bbc9b4..2ee0df9b2 100644 --- a/tests/Unit/ActivityPub/RemoteFollowTest.php +++ b/tests/Unit/ActivityPub/RemoteFollowTest.php @@ -4,24 +4,24 @@ namespace Tests\Unit\ActivityPub; use App\Util\ActivityPub\Helpers; use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; class RemoteFollowTest extends TestCase { - public function setUp(): void - { - parent::setUp(); + protected string $mastodon; - $this->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"}]}'; + public function setUp(): void + { + parent::setUp(); - } + $this->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 + } + + /** @test */ + public function validateMastodonFollowObject() + { + $mastodon = json_decode($this->mastodon, true); + $mastodon = Helpers::validateObject($mastodon); + $this->assertTrue($mastodon); + } +} diff --git a/tests/Unit/ActivityPub/StoryValidationTest.php b/tests/Unit/ActivityPub/StoryValidationTest.php index 0dd756f16..29b5d2cd2 100644 --- a/tests/Unit/ActivityPub/StoryValidationTest.php +++ b/tests/Unit/ActivityPub/StoryValidationTest.php @@ -2,83 +2,82 @@ namespace Tests\Unit\ActivityPub; -use PHPUnit\Framework\TestCase; use App\Util\ActivityPub\Validator\StoryValidator; +use PHPUnit\Framework\TestCase; class StoryValidationTest extends TestCase { - public function setUp(): void - { - parent::setUp(); + public function setUp(): void + { + parent::setUp(); - $this->activity = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","id":"https://pixelfed.test/stories/dansup/338581222496276480","type":"Story","to":["https://pixelfed.test/users/dansup/followers"],"cc":[],"attributedTo":"https://pixelfed.test/users/dansup","published":"2021-09-01T07:20:53+00:00","expiresAt":"2021-09-02T07:21:04+00:00","duration":3,"can_reply":true,"can_react":true,"attachment":{"type":"Image","url":"https://pixelfed.test/storage/_esm.t3/xV9/R2LF1xwhAA/011oqKVPDySG3WCPW7yIs2wobvccoITMnG/yT_FZX04f2DCzTA3K8HD2OS7FptXTHPiE1c_ZkHASBQ8UlPKH4.jpg","mediaType":"image/jpeg"}}', true); - } + $this->activity = json_decode('{"@context":"https://www.w3.org/ns/activitystreams","id":"https://pixelfed.test/stories/dansup/338581222496276480","type":"Story","to":["https://pixelfed.test/users/dansup/followers"],"cc":[],"attributedTo":"https://pixelfed.test/users/dansup","published":"2021-09-01T07:20:53+00:00","expiresAt":"2021-09-02T07:21:04+00:00","duration":3,"can_reply":true,"can_react":true,"attachment":{"type":"Image","url":"https://pixelfed.test/storage/_esm.t3/xV9/R2LF1xwhAA/011oqKVPDySG3WCPW7yIs2wobvccoITMnG/yT_FZX04f2DCzTA3K8HD2OS7FptXTHPiE1c_ZkHASBQ8UlPKH4.jpg","mediaType":"image/jpeg"}}', true); + } - /** @test */ - public function schemaTest() - { - $this->assertTrue(StoryValidator::validate($this->activity)); - } + /** @test */ + public function schemaTest() + { + $this->assertTrue(StoryValidator::validate($this->activity)); + } - /** @test */ - public function invalidContext() - { - $activity = $this->activity; - unset($activity['@context']); - $activity['@@context'] = 'https://www.w3.org/ns/activitystreams'; - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function invalidContext() + { + $activity = $this->activity; + unset($activity['@context']); + $activity['@@context'] = 'https://www.w3.org/ns/activitystreams'; + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function missingContext() - { - $activity = $this->activity; - unset($activity['@context']); - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function missingContext() + { + $activity = $this->activity; + unset($activity['@context']); + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function missingId() - { - $activity = $this->activity; - unset($activity['id']); - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function missingId() + { + $activity = $this->activity; + unset($activity['id']); + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function missingType() - { - $activity = $this->activity; - unset($activity['type']); - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function missingType() + { + $activity = $this->activity; + unset($activity['type']); + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function invalidType() - { - $activity = $this->activity; - $activity['type'] = 'Store'; - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function invalidType() + { + $activity = $this->activity; + $activity['type'] = 'Store'; + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function missingTo() - { - $activity = $this->activity; - unset($activity['to']); - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function missingTo() + { + $activity = $this->activity; + unset($activity['to']); + $this->assertFalse(StoryValidator::validate($activity)); + } - /** @test */ - public function missingTimestamps() - { - $activity = $this->activity; - unset($activity['published']); - $this->assertFalse(StoryValidator::validate($activity)); - - $activity = $this->activity; - unset($activity['expiresAt']); - $this->assertFalse(StoryValidator::validate($activity)); - } + /** @test */ + public function missingTimestamps() + { + $activity = $this->activity; + unset($activity['published']); + $this->assertFalse(StoryValidator::validate($activity)); + $activity = $this->activity; + unset($activity['expiresAt']); + $this->assertFalse(StoryValidator::validate($activity)); + } } diff --git a/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php b/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php index cdf998afb..186894455 100644 --- a/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php +++ b/tests/Unit/ActivityPub/Verb/AcceptVerbTest.php @@ -2,96 +2,96 @@ namespace Tests\Unit\ActivityPub\Verb; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Validator\Accept; +use Tests\TestCase; class AcceptVerbTest extends TestCase { - protected $validAccept; - protected $invalidAccept; + protected array $validAccept; + protected array $invalidAccept; + protected array $mastodonAccept; - public function setUp(): void - { - parent::setUp(); - $this->validAccept = [ - '@context' => 'https://www.w3.org/ns/activitystreams', - 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', - 'type' => 'Accept', - 'actor' => 'https://example.org/u/alice', - 'object' => [ - 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', - 'type' => 'Follow', - 'actor' => 'https://example.net/u/bob', - 'object' => 'https://example.org/u/alice' - ] - ]; - $this->invalidAccept = [ - '@context' => 'https://www.w3.org/ns/activitystreams', - 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', - 'type' => 'Accept2', - 'actor' => 'https://example.org/u/alice', - 'object' => [ - 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', - 'type' => 'Follow', - 'actor' => 'https://example.net/u/bob', - '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", - ], - ], + public function setUp(): void + { + parent::setUp(); - "type" => "Accept", + $this->validAccept = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', + 'type' => 'Accept', + 'actor' => 'https://example.org/u/alice', + 'object' => [ + 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', + 'type' => 'Follow', + 'actor' => 'https://example.net/u/bob', + 'object' => 'https://example.org/u/alice' + ] + ]; - "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", - ], - ]; - } + $this->invalidAccept = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', + 'type' => 'Accept2', + 'actor' => 'https://example.org/u/alice', + 'object' => [ + 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', + 'type' => 'Follow', + 'actor' => 'https://example.net/u/bob', + 'object' => 'https://example.org/u/alice' + ] + ]; - /** @test */ - public function basic_accept() - { - $this->assertTrue(Accept::validate($this->validAccept)); - } + $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 */ - public function invalid_accept() - { - $this->assertFalse(Accept::validate($this->invalidAccept)); - } + /** @test */ + public function basic_accept() + { + $this->assertTrue(Accept::validate($this->validAccept)); + } - /** @test */ - public function mastodon_accept() - { - $this->assertTrue(Accept::validate($this->mastodonAccept)); - } + /** @test */ + public function invalid_accept() + { + $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 520e9bd36..c38fffb34 100644 --- a/tests/Unit/ActivityPub/Verb/AnnounceTest.php +++ b/tests/Unit/ActivityPub/Verb/AnnounceTest.php @@ -2,211 +2,218 @@ namespace Tests\Unit\ActivityPub\Verb; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Validator\Announce; +use Tests\TestCase; class AnnounceTest extends TestCase { + protected array $validAnnounce; + protected array $invalidAnnounce; + protected array $invalidDate; + protected array $contextMissing; + protected array $audienceMissing; + protected array $audienceMissing2; + protected array $invalidActor; + protected array $invalidActor2; + protected array $mastodonAnnounce; - public function setUp(): void - { - parent::setUp(); + public function setUp(): void + { + parent::setUp(); - $this->validAnnounce = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59Z", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->validAnnounce = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59Z', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->invalidAnnounce = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce2", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59Z", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->invalidAnnounce = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce2', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59Z', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->invalidDate = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59ZEZE", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->invalidDate = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59ZEZE', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->contextMissing = [ - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59Z", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->contextMissing = [ + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59Z', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->audienceMissing = [ - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59Z", - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->audienceMissing = [ + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59Z', + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->audienceMissing2 = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "https://example.org/users/alice", - "published" => "2018-12-31T23:59:59Z", - "to" => null, - "cc" => null, - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->audienceMissing2 = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => 'https://example.org/users/alice', + 'published' => '2018-12-31T23:59:59Z', + 'to' => null, + 'cc' => null, + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->invalidActor = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "actor" => "10000", - "published" => "2018-12-31T23:59:59Z", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->invalidActor = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'actor' => '10000', + 'published' => '2018-12-31T23:59:59Z', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + 'object' => 'https://example.org/p/bob/100000000000000', + ]; - $this->invalidActor2 = [ - "@context" => "https://www.w3.org/ns/activitystreams", - "id" => "https://example.org/users/alice/statuses/100000000000001/activity", - "type" => "Announce", - "published" => "2018-12-31T23:59:59Z", - "to" => [ - "https://www.w3.org/ns/activitystreams#Public" - ], - "cc" => [ - "https://example.org/users/bob", - "https://example.org/users/alice/followers" - ], - "object" => "https://example.org/p/bob/100000000000000", - ]; + $this->invalidActor2 = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/users/alice/statuses/100000000000001/activity', + 'type' => 'Announce', + 'published' => '2018-12-31T23:59:59Z', + 'to' => [ + 'https://www.w3.org/ns/activitystreams#Public' + ], + 'cc' => [ + 'https://example.org/users/bob', + 'https://example.org/users/alice/followers' + ], + '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", - ], - ], - ]; - } + $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 */ - public function basic_accept() - { - $this->assertTrue(Announce::validate($this->validAnnounce)); - } + /** @test */ + public function basic_accept() + { + $this->assertTrue(Announce::validate($this->validAnnounce)); + } - /** @test */ - public function invalid_accept() - { - $this->assertFalse(Announce::validate($this->invalidAnnounce)); - } + /** @test */ + public function invalid_accept() + { + $this->assertFalse(Announce::validate($this->invalidAnnounce)); + } - /** @test */ - public function invalid_date() - { - $this->assertFalse(Announce::validate($this->invalidDate)); - } + /** @test */ + public function invalid_date() + { + $this->assertFalse(Announce::validate($this->invalidDate)); + } - /** @test */ - public function context_missing() - { - $this->assertFalse(Announce::validate($this->contextMissing)); - } + /** @test */ + public function context_missing() + { + $this->assertFalse(Announce::validate($this->contextMissing)); + } - /** @test */ - public function audience_missing() - { - $this->assertFalse(Announce::validate($this->audienceMissing)); - $this->assertFalse(Announce::validate($this->audienceMissing2)); - } + /** @test */ + public function audience_missing() + { + $this->assertFalse(Announce::validate($this->audienceMissing)); + $this->assertFalse(Announce::validate($this->audienceMissing2)); + } - /** @test */ - public function invalid_actor() - { - $this->assertFalse(Announce::validate($this->invalidActor)); - $this->assertFalse(Announce::validate($this->invalidActor2)); - } + /** @test */ + public function invalid_actor() + { + $this->assertFalse(Announce::validate($this->invalidActor)); + $this->assertFalse(Announce::validate($this->invalidActor2)); + } - /** @test */ - public function mastodon_announce() - { - $this->assertTrue(Announce::validate($this->mastodonAnnounce)); - } + /** @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 index 58f2b96d1..eceec81ff 100644 --- a/tests/Unit/ActivityPub/Verb/FollowTest.php +++ b/tests/Unit/ActivityPub/Verb/FollowTest.php @@ -2,52 +2,51 @@ namespace Tests\Unit\ActivityPub\Verb; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Validator\Follow; +use Tests\TestCase; class FollowTest extends TestCase { + protected array $basicFollow; - public function setUp(): void - { - parent::setUp(); + public function setUp(): void + { + parent::setUp(); - $this->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", - ], - ], - ]; - } + $this->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 + /** @test */ + public function basic_follow() + { + $this->assertTrue(Follow::validate($this->basicFollow)); + } +} diff --git a/tests/Unit/ActivityPub/Verb/LikeTest.php b/tests/Unit/ActivityPub/Verb/LikeTest.php index f23fa00a1..e455f00a4 100644 --- a/tests/Unit/ActivityPub/Verb/LikeTest.php +++ b/tests/Unit/ActivityPub/Verb/LikeTest.php @@ -2,52 +2,51 @@ namespace Tests\Unit\ActivityPub\Verb; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Validator\Like; +use Tests\TestCase; class LikeTest extends TestCase { + protected array $basicLike; - public function setUp(): void - { - parent::setUp(); + public function setUp(): void + { + parent::setUp(); - $this->basicLike = [ - "type" => "Like", - "signature" => [ - "type" => "RsaSignature2017", - "signatureValue" => "fdxMfQSMwbC6wP6sh6neS/vM5879K67yQkHTbiT5Npr5wAac0y6+o3Ij+41tN3rL6wfuGTosSBTHOtta6R4GCOOhCaCSLMZKypnp1VltCzLDoyrZELnYQIC8gpUXVmIycZbREk22qWUe/w7DAFaKK4UscBlHDzeDVcA0K3Se5Sluqi9/Zh+ldAnEzj/rSEPDjrtvf5wGNf3fHxbKSRKFt90JvKK6hS+vxKUhlRFDf6/SMETw+EhwJSNW4d10yMUakqUWsFv4Acq5LW7l+HpYMvlYY1FZhNde1+uonnCyuQDyvzkff8zwtEJmAXC4RivO/VVLa17SmqheJZfI8oluVg==", - "creator" => "http://mastodon.example.org/users/admin#main-key", - "created" => "2018-02-17T18:57:49Z", - ], - "object" => "http://pixelfed.dev/p/1", - "nickname" => "dsup", - "id" => "http://mastodon.example.org/users/admin#likes/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", - ], - ], - ]; - } + $this->basicLike = [ + 'type' => 'Like', + 'signature' => [ + 'type' => 'RsaSignature2017', + 'signatureValue' => 'fdxMfQSMwbC6wP6sh6neS/vM5879K67yQkHTbiT5Npr5wAac0y6+o3Ij+41tN3rL6wfuGTosSBTHOtta6R4GCOOhCaCSLMZKypnp1VltCzLDoyrZELnYQIC8gpUXVmIycZbREk22qWUe/w7DAFaKK4UscBlHDzeDVcA0K3Se5Sluqi9/Zh+ldAnEzj/rSEPDjrtvf5wGNf3fHxbKSRKFt90JvKK6hS+vxKUhlRFDf6/SMETw+EhwJSNW4d10yMUakqUWsFv4Acq5LW7l+HpYMvlYY1FZhNde1+uonnCyuQDyvzkff8zwtEJmAXC4RivO/VVLa17SmqheJZfI8oluVg==', + 'creator' => 'http://mastodon.example.org/users/admin#main-key', + 'created' => '2018-02-17T18:57:49Z', + ], + 'object' => 'http://pixelfed.dev/p/1', + 'nickname' => 'dsup', + 'id' => 'http://mastodon.example.org/users/admin#likes/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_like() - { - $this->assertTrue(Like::validate($this->basicLike)); - } -} \ No newline at end of file + /** @test */ + public function basic_like() + { + $this->assertTrue(Like::validate($this->basicLike)); + } +} diff --git a/tests/Unit/ActivityPub/Verb/UndoFollowTest.php b/tests/Unit/ActivityPub/Verb/UndoFollowTest.php index 3ffb3499c..c4ea84bf9 100644 --- a/tests/Unit/ActivityPub/Verb/UndoFollowTest.php +++ b/tests/Unit/ActivityPub/Verb/UndoFollowTest.php @@ -2,45 +2,41 @@ namespace Tests\Unit\ActivityPub\Verb; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\ActivityPub\Validator\UndoFollow; +use Tests\TestCase; class UndoFollowTest extends TestCase { + protected array $validUndo; + protected array $invalidUndo; - protected $validUndo; - protected $invalidUndo; + public function setUp(): void + { + parent::setUp(); - public function setUp(): void - { - parent::setUp(); + $this->validUndo = json_decode('{"@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"}],"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"},"type":"Undo","object":{"type":"Follow","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"},"actor":"http://mastodon.example.org/users/admin","id":"http://mastodon.example.org/users/admin#follow/2/undo"}', true, 8); - $this->validUndo = json_decode('{"@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"}],"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"},"type":"Undo","object":{"type":"Follow","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"},"actor":"http://mastodon.example.org/users/admin","id":"http://mastodon.example.org/users/admin#follow/2/undo"}', true, 8); + $this->invalidUndo = [ + '@context' => 'https://www.w3.org/ns/activitystreams', + 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', + 'type' => 'Undo', + 'actor' => 'https://example.org/u/alice', + 'object' => [ + 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', + 'type' => 'Follow', + ] + ]; + } - $this->invalidUndo = [ - '@context' => 'https://www.w3.org/ns/activitystreams', - 'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7', - 'type' => 'Undo', - 'actor' => 'https://example.org/u/alice', - 'object' => [ - 'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9', - 'type' => 'Follow', - ] - ]; - } + /** @test */ + public function valid_undo_follow() + { + $this->assertTrue(UndoFollow::validate($this->validUndo)); + } - /** @test */ - public function valid_undo_follow() - { - $this->assertTrue(UndoFollow::validate($this->validUndo)); - } - - /** @test */ - public function invalid_undo_follow() - { - $this->assertFalse(UndoFollow::validate($this->invalidUndo)); - } - -} \ No newline at end of file + /** @test */ + public function invalid_undo_follow() + { + $this->assertFalse(UndoFollow::validate($this->invalidUndo)); + } +} diff --git a/tests/Unit/BearcapTest.php b/tests/Unit/BearcapTest.php index f7aaf6d98..34a0b58c4 100644 --- a/tests/Unit/BearcapTest.php +++ b/tests/Unit/BearcapTest.php @@ -2,76 +2,76 @@ namespace Tests\Unit; -use PHPUnit\Framework\TestCase; use App\Util\Lexer\Bearcap; +use PHPUnit\Framework\TestCase; class BearcapTest extends TestCase { - /** @test */ - public function validTest() - { - $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=https://pixelfed.test/stories/admin/337892163734081536'; - $expected = [ - "token" => "LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2", - "url" => "https://pixelfed.test/stories/admin/337892163734081536", - ]; - $actual = Bearcap::decode($str); - $this->assertEquals($expected, $actual); - } + /** @test */ + public function validTest() + { + $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=https://pixelfed.test/stories/admin/337892163734081536'; + $expected = [ + 'token' => 'LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2', + 'url' => 'https://pixelfed.test/stories/admin/337892163734081536', + ]; + $actual = Bearcap::decode($str); + $this->assertEquals($expected, $actual); + } - /** @test */ - public function invalidTokenParameterName() - { - $str = 'bear:?token=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=https://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function invalidTokenParameterName() + { + $str = 'bear:?token=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=https://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function invalidUrlParameterName() - { - $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&url=https://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function invalidUrlParameterName() + { + $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&url=https://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function invalidScheme() - { - $str = 'bearcap:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&url=https://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function invalidScheme() + { + $str = 'bearcap:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&url=https://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function missingToken() - { - $str = 'bear:?u=https://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function missingToken() + { + $str = 'bear:?u=https://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function missingUrl() - { - $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function missingUrl() + { + $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function invalidHttpUrl() - { - $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=http://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function invalidHttpUrl() + { + $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=http://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } - /** @test */ - public function invalidUrlSchema() - { - $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=phar://pixelfed.test/stories/admin/337892163734081536'; - $actual = Bearcap::decode($str); - $this->assertFalse($actual); - } + /** @test */ + public function invalidUrlSchema() + { + $str = 'bear:?t=LpVypnEUdHhwwgXE9tTqEwrtPvmLjqYaPexqyXnVo1flSfJy5AYMCdRPiFRmqld2&u=phar://pixelfed.test/stories/admin/337892163734081536'; + $actual = Bearcap::decode($str); + $this->assertFalse($actual); + } } diff --git a/tests/Unit/CryptoTest.php b/tests/Unit/CryptoTest.php index 57f68f1f7..5b1f1e806 100644 --- a/tests/Unit/CryptoTest.php +++ b/tests/Unit/CryptoTest.php @@ -2,6 +2,7 @@ namespace Tests\Unit; +use phpseclib\Crypt\RSA; use Tests\TestCase; class CryptoTest extends TestCase @@ -18,7 +19,7 @@ class CryptoTest extends TestCase public function testRSASigning() { - $rsa = new \phpseclib\Crypt\RSA(); + $rsa = new RSA(); extract($rsa->createKey()); $rsa->loadKey($privatekey); $plaintext = 'pixelfed rsa test'; diff --git a/tests/Unit/DateTimeTest.php b/tests/Unit/DateTimeTest.php deleted file mode 100644 index f5b989b5e..000000000 --- a/tests/Unit/DateTimeTest.php +++ /dev/null @@ -1,33 +0,0 @@ -assertEquals(9, $ts->month); - $this->assertEquals(16, $ts->day); - $this->assertEquals(2019, $ts->year); - $this->assertEquals(2, $ts->hour); - $this->assertEquals(41, $ts->minute); - } - - /** @test */ - public function p3kTimestamp() - { - $ts = Carbon::createFromFormat(\DateTime::ISO8601, '2019-09-16T08:40:55+10:00'); - $this->assertEquals(9, $ts->month); - $this->assertEquals(16, $ts->day); - $this->assertEquals(2019, $ts->year); - $this->assertEquals(8, $ts->hour); - $this->assertEquals(40, $ts->minute); - } -} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php deleted file mode 100644 index 26465f22b..000000000 --- a/tests/Unit/ExampleTest.php +++ /dev/null @@ -1,18 +0,0 @@ -assertTrue(true); - } -} diff --git a/tests/Unit/Lexer/RestrictedNameTest.php b/tests/Unit/Lexer/RestrictedNameTest.php index ef5aec06f..43740584a 100644 --- a/tests/Unit/Lexer/RestrictedNameTest.php +++ b/tests/Unit/Lexer/RestrictedNameTest.php @@ -2,20 +2,18 @@ namespace Tests\Unit\Lexer; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; use App\Util\Lexer\RestrictedNames; +use Tests\TestCase; class RestrictedNameTest extends TestCase { - /** @test */ - public function restrictedUsername() - { - $names = RestrictedNames::get(); - $this->assertContains('p', $names); - $this->assertContains('admin', $names); - $this->assertNotContains('dansup', $names); - $this->assertNotContains('earth', $names); - } + /** @test */ + public function restrictedUsername() + { + $names = RestrictedNames::get(); + $this->assertContains('p', $names); + $this->assertContains('admin', $names); + $this->assertNotContains('dansup', $names); + $this->assertNotContains('earth', $names); + } } diff --git a/tests/Unit/Lexer/StatusLexerTest.php b/tests/Unit/Lexer/StatusLexerTest.php index ba725ee12..caaedd8ed 100644 --- a/tests/Unit/Lexer/StatusLexerTest.php +++ b/tests/Unit/Lexer/StatusLexerTest.php @@ -2,57 +2,55 @@ namespace Tests\Unit\Lexer; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; +use App\Status; use App\Util\Lexer\Autolink; use App\Util\Lexer\Extractor; -use App\Status; +use Tests\TestCase; class StatusLexerTest extends TestCase { public $status; public $entities; - public $autolink; + public $autolink; public function setUp(): void { parent::setUp(); - $this->status = "@pixelfed hi, really like the website! #píxelfed"; - $this->entities = Extractor::create()->extract($this->status); - $this->autolink = Autolink::create()->autolink($this->status); + $this->status = '@pixelfed hi, really like the website! #píxelfed'; + $this->entities = Extractor::create()->extract($this->status); + $this->autolink = Autolink::create()->autolink($this->status); } public function testLexerExtractor() { $expected = [ - "hashtags" => [ - "píxelfed", - ], - "urls" => [], - "mentions" => [ - "pixelfed", - ], - "replyto" => "pixelfed", - "hashtags_with_indices" => [ - [ - "hashtag" => "píxelfed", - "indices" => [ - 39, - 48, - ], - ], - ], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "pixelfed", - "indices" => [ - 0, - 9, + 'hashtags' => [ + 'píxelfed', + ], + 'urls' => [], + 'mentions' => [ + 'pixelfed', + ], + 'replyto' => 'pixelfed', + 'hashtags_with_indices' => [ + [ + 'hashtag' => 'píxelfed', + 'indices' => [ + 39, + 48, ], - ] - ] + ], + ], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'pixelfed', + 'indices' => [ + 0, + 9, + ], + ] + ] ]; $this->assertEquals($this->entities, $expected); @@ -64,40 +62,40 @@ class StatusLexerTest extends TestCase $this->assertEquals($this->autolink, $expected); } - /** @test **/ + /** @test * */ public function remoteMention() { $expected = [ - "hashtags" => [ - "dansup", + 'hashtags' => [ + 'dansup', ], - "urls" => [], - "mentions" => [ - "@dansup@mstdn.io", - "test", + 'urls' => [], + 'mentions' => [ + '@dansup@mstdn.io', + 'test', ], - "replyto" => null, - "hashtags_with_indices" => [ + 'replyto' => null, + 'hashtags_with_indices' => [ [ - "hashtag" => "dansup", - "indices" => [ + 'hashtag' => 'dansup', + 'indices' => [ 0, 7, ], ], ], - "urls_with_indices" => [], - "mentions_with_indices" => [ + 'urls_with_indices' => [], + 'mentions_with_indices' => [ [ - "screen_name" => "@dansup@mstdn.io", - "indices" => [ + 'screen_name' => '@dansup@mstdn.io', + 'indices' => [ 8, 24, ], ], [ - "screen_name" => "test", - "indices" => [ + 'screen_name' => 'test', + 'indices' => [ 25, 30, ], @@ -108,7 +106,7 @@ class StatusLexerTest extends TestCase $this->assertEquals($actual, $expected); } - /** @test **/ + /** @test * */ public function mentionLimit() { $text = '@test1 @test @test2 @test3 @test4 @test5 test post'; @@ -118,7 +116,7 @@ class StatusLexerTest extends TestCase $this->assertEquals($count, Status::MAX_MENTIONS); } - /** @test **/ + /** @test * */ public function hashtagLimit() { $text = '#hashtag0 #hashtag1 #hashtag2 #hashtag3 #hashtag4 #hashtag5 #hashtag6 #hashtag7 #hashtag8 #hashtag9 #hashtag10 #hashtag11 #hashtag12 #hashtag13 #hashtag14 #hashtag15 #hashtag16 #hashtag17 #hashtag18 #hashtag19 #hashtag20 #hashtag21 #hashtag22 #hashtag23 #hashtag24 #hashtag25 #hashtag26 #hashtag27 #hashtag28 #hashtag29 #hashtag30 #hashtag31'; @@ -129,7 +127,7 @@ class StatusLexerTest extends TestCase } - /** @test **/ + /** @test * */ public function linkLimit() { $text = 'https://example.org https://example.net https://example.com'; diff --git a/tests/Unit/Lexer/UsernameTest.php b/tests/Unit/Lexer/UsernameTest.php index e5c310db7..0d21b6e00 100644 --- a/tests/Unit/Lexer/UsernameTest.php +++ b/tests/Unit/Lexer/UsernameTest.php @@ -2,178 +2,177 @@ namespace Tests\Unit\Lexer; -use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; use App\Util\Lexer\Autolink; use App\Util\Lexer\Extractor; +use Tests\TestCase; class UsernameTest extends TestCase { - /** @test **/ - public function genericUsername() - { - $username = '@dansup'; - $entities = Extractor::create()->extract($username); - $autolink = Autolink::create()->autolink($username); - $expectedAutolink = '@dansup'; - $expectedEntity = [ - "hashtags" => [], - "urls" => [], - "mentions" => [ - "dansup", - ], - "replyto" => "dansup", - "hashtags_with_indices" => [], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "dansup", - "indices" => [ - 0, - 7, - ], - ], - ], - ]; - $this->assertEquals($expectedAutolink, $autolink); - $this->assertEquals($expectedEntity, $entities); - } + /** @test * */ + public function genericUsername() + { + $username = '@dansup'; + $entities = Extractor::create()->extract($username); + $autolink = Autolink::create()->autolink($username); + $expectedAutolink = '@dansup'; + $expectedEntity = [ + 'hashtags' => [], + 'urls' => [], + 'mentions' => [ + 'dansup', + ], + 'replyto' => 'dansup', + 'hashtags_with_indices' => [], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'dansup', + 'indices' => [ + 0, + 7, + ], + ], + ], + ]; + $this->assertEquals($expectedAutolink, $autolink); + $this->assertEquals($expectedEntity, $entities); + } - /** @test **/ - public function usernameWithPeriod() - { - $username = '@dansup.two'; - $autolink = Autolink::create()->autolink($username); - $entities = Extractor::create()->extract($username); - $expectedAutolink = '@dansup.two'; - $expectedEntity = [ - "hashtags" => [], - "urls" => [], - "mentions" => [ - "dansup.two", - ], - "replyto" => "dansup.two", - "hashtags_with_indices" => [], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "dansup.two", - "indices" => [ - 0, - 11, - ], - ], - ], - ]; - $this->assertEquals($expectedAutolink, $autolink); - $this->assertEquals($expectedEntity, $entities); - } + /** @test * */ + public function usernameWithPeriod() + { + $username = '@dansup.two'; + $autolink = Autolink::create()->autolink($username); + $entities = Extractor::create()->extract($username); + $expectedAutolink = '@dansup.two'; + $expectedEntity = [ + 'hashtags' => [], + 'urls' => [], + 'mentions' => [ + 'dansup.two', + ], + 'replyto' => 'dansup.two', + 'hashtags_with_indices' => [], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'dansup.two', + 'indices' => [ + 0, + 11, + ], + ], + ], + ]; + $this->assertEquals($expectedAutolink, $autolink); + $this->assertEquals($expectedEntity, $entities); + } - /** @test **/ - public function usernameWithDash() - { - $username = '@dansup-too'; - $autolink = Autolink::create()->autolink($username); - $entities = Extractor::create()->extract($username); - $expectedAutolink = '@dansup-too'; - $expectedEntity = [ - "hashtags" => [], - "urls" => [], - "mentions" => [ - "dansup-too", - ], - "replyto" => "dansup-too", - "hashtags_with_indices" => [], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "dansup-too", - "indices" => [ - 0, - 11, - ], - ], - ], - ]; - $this->assertEquals($expectedAutolink, $autolink); - $this->assertEquals($expectedEntity, $entities); - } + /** @test * */ + public function usernameWithDash() + { + $username = '@dansup-too'; + $autolink = Autolink::create()->autolink($username); + $entities = Extractor::create()->extract($username); + $expectedAutolink = '@dansup-too'; + $expectedEntity = [ + 'hashtags' => [], + 'urls' => [], + 'mentions' => [ + 'dansup-too', + ], + 'replyto' => 'dansup-too', + 'hashtags_with_indices' => [], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'dansup-too', + 'indices' => [ + 0, + 11, + ], + ], + ], + ]; + $this->assertEquals($expectedAutolink, $autolink); + $this->assertEquals($expectedEntity, $entities); + } - /** @test **/ - public function usernameWithUnderscore() - { - $username = '@dansup_too'; - $autolink = Autolink::create()->autolink($username); - $entities = Extractor::create()->extract($username); - $expectedAutolink = '@dansup_too'; - $expectedEntity = [ - "hashtags" => [], - "urls" => [], - "mentions" => [ - "dansup_too", - ], - "replyto" => "dansup_too", - "hashtags_with_indices" => [], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "dansup_too", - "indices" => [ - 0, - 11, - ], - ], - ], - ]; - $this->assertEquals($expectedAutolink, $autolink); - $this->assertEquals($expectedEntity, $entities); - } + /** @test * */ + public function usernameWithUnderscore() + { + $username = '@dansup_too'; + $autolink = Autolink::create()->autolink($username); + $entities = Extractor::create()->extract($username); + $expectedAutolink = '@dansup_too'; + $expectedEntity = [ + 'hashtags' => [], + 'urls' => [], + 'mentions' => [ + 'dansup_too', + ], + 'replyto' => 'dansup_too', + 'hashtags_with_indices' => [], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'dansup_too', + 'indices' => [ + 0, + 11, + ], + ], + ], + ]; + $this->assertEquals($expectedAutolink, $autolink); + $this->assertEquals($expectedEntity, $entities); + } - /** @test **/ - public function multipleMentions() - { - $text = 'hello @dansup and @pixelfed.team from @username_underscore'; - $autolink = Autolink::create()->autolink($text); - $entities = Extractor::create()->extract($text); - $expectedAutolink = 'hello @dansup and @pixelfed.team from @username_underscore'; - $expectedEntity = [ - "hashtags" => [], - "urls" => [], - "mentions" => [ - "dansup", - "pixelfed.team", - "username_underscore", - ], - "replyto" => null, - "hashtags_with_indices" => [], - "urls_with_indices" => [], - "mentions_with_indices" => [ - [ - "screen_name" => "dansup", - "indices" => [ - 6, - 13, - ], - ], - [ - "screen_name" => "pixelfed.team", - "indices" => [ - 18, - 32, - ], - ], - [ - "screen_name" => "username_underscore", - "indices" => [ - 38, - 58, - ], - ], - ], - ]; + /** @test * */ + public function multipleMentions() + { + $text = 'hello @dansup and @pixelfed.team from @username_underscore'; + $autolink = Autolink::create()->autolink($text); + $entities = Extractor::create()->extract($text); + $expectedAutolink = 'hello @dansup and @pixelfed.team from @username_underscore'; + $expectedEntity = [ + 'hashtags' => [], + 'urls' => [], + 'mentions' => [ + 'dansup', + 'pixelfed.team', + 'username_underscore', + ], + 'replyto' => null, + 'hashtags_with_indices' => [], + 'urls_with_indices' => [], + 'mentions_with_indices' => [ + [ + 'screen_name' => 'dansup', + 'indices' => [ + 6, + 13, + ], + ], + [ + 'screen_name' => 'pixelfed.team', + 'indices' => [ + 18, + 32, + ], + ], + [ + 'screen_name' => 'username_underscore', + 'indices' => [ + 38, + 58, + ], + ], + ], + ]; - $this->assertEquals($expectedAutolink, $autolink); - $this->assertEquals($expectedEntity, $entities); - } + $this->assertEquals($expectedAutolink, $autolink); + $this->assertEquals($expectedEntity, $entities); + } -} \ No newline at end of file +} diff --git a/tests/Unit/PurifierTest.php b/tests/Unit/PurifierTest.php index 844467f2a..3366c3471 100644 --- a/tests/Unit/PurifierTest.php +++ b/tests/Unit/PurifierTest.php @@ -4,20 +4,18 @@ namespace Tests\Unit; use Purify; use Tests\TestCase; -use Illuminate\Foundation\Testing\WithFaker; -use Illuminate\Foundation\Testing\RefreshDatabase; class PurifierTest extends TestCase { - /** @test */ + /** @test */ public function puckTest() { - $actual = Purify::clean("catgirl spinning around in the interblag"); - $expected = 'catgirl spinning around in the interblag'; + $actual = Purify::clean("catgirl spinning around in the interblag"); + $expected = 'catgirl spinning around in the interblag'; $this->assertEquals($expected, $actual); - $actual = Purify::clean("

catgirl spinning around in the interblag

"); - $expected = '

catgirl spinning around in the interblag

'; + $actual = Purify::clean("

catgirl spinning around in the interblag

"); + $expected = '

catgirl spinning around in the interblag

'; $this->assertEquals($expected, $actual); $actual = Purify::clean('pixelfed'); diff --git a/tests/Unit/SnowflakeTest.php b/tests/Unit/SnowflakeTest.php deleted file mode 100644 index 7696dfb13..000000000 --- a/tests/Unit/SnowflakeTest.php +++ /dev/null @@ -1,17 +0,0 @@ -assertEquals($expected, $actual); - } -} diff --git a/tests/Unit/WebfingerTest.php b/tests/Unit/WebfingerTest.php index 0a5101b43..73d797f65 100644 --- a/tests/Unit/WebfingerTest.php +++ b/tests/Unit/WebfingerTest.php @@ -2,47 +2,47 @@ namespace Tests\Unit; -use Tests\TestCase; use App\Util\Lexer\Nickname; +use Tests\TestCase; class WebfingerTest extends TestCase { - /** @test */ - public function webfingerTest() - { - $expected = [ - "domain" => "pixelfed.org", - "username" => "dansup", - ]; - $actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org'); - $this->assertEquals($expected, $actual); + /** @test */ + public function webfingerTest() + { + $expected = [ + 'domain' => 'pixelfed.org', + 'username' => 'dansup', + ]; + $actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org'); + $this->assertEquals($expected, $actual); - $expected = [ - "domain" => "pixelfed.org", - "username" => "dansup_", - ]; - $actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org'); - $this->assertNotEquals($expected, $actual); + $expected = [ + 'domain' => 'pixelfed.org', + 'username' => 'dansup_', + ]; + $actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org'); + $this->assertNotEquals($expected, $actual); - $expected = [ - "domain" => "pixelfed.org", - "username" => "dansup", - ]; - $actual = Nickname::normalizeProfileUrl('acct:@dansup@pixelfed.org'); - $this->assertEquals($expected, $actual); + $expected = [ + 'domain' => 'pixelfed.org', + 'username' => 'dansup', + ]; + $actual = Nickname::normalizeProfileUrl('acct:@dansup@pixelfed.org'); + $this->assertEquals($expected, $actual); - $expected = [ - "domain" => "pixelfed.org", - "username" => "dansup", - ]; - $actual = Nickname::normalizeProfileUrl('dansup@pixelfed.org'); - $this->assertEquals($expected, $actual); + $expected = [ + 'domain' => 'pixelfed.org', + 'username' => 'dansup', + ]; + $actual = Nickname::normalizeProfileUrl('dansup@pixelfed.org'); + $this->assertEquals($expected, $actual); - $expected = [ - "domain" => "pixelfed.org", - "username" => "dansup", - ]; - $actual = Nickname::normalizeProfileUrl('@dansup@pixelfed.org'); - $this->assertEquals($expected, $actual); - } + $expected = [ + 'domain' => 'pixelfed.org', + 'username' => 'dansup', + ]; + $actual = Nickname::normalizeProfileUrl('@dansup@pixelfed.org'); + $this->assertEquals($expected, $actual); + } }