[TESTS] Fix a couple of issues from last changes

This commit is contained in:
Diogo Peralta Cordeiro 2022-03-14 18:33:47 +00:00
parent 888c3798b7
commit 20f690c532
Signed by: diogo
GPG Key ID: 18D2D35001FBFAB0
94 changed files with 176 additions and 160 deletions

View File

@ -39,8 +39,6 @@ use App\Core\Entity;
* @copyright 2009-2014 Free Software Foundation, Inc http://www.fsf.org * @copyright 2009-2014 Free Software Foundation, Inc http://www.fsf.org
* @author Diogo Peralta Cordeiro <@diogo.site> * @author Diogo Peralta Cordeiro <@diogo.site>
* @copyright 2021-2022 Free Software Foundation, Inc http://www.fsf.org * @copyright 2021-2022 Free Software Foundation, Inc http://www.fsf.org
* @author Diogo Peralta Cordeiro <@diogo.site>
* @copyright 2022 Free Software Foundation, Inc http://www.fsf.org
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
*/ */
class Attention extends Entity class Attention extends Entity

View File

@ -43,6 +43,7 @@ use App\Core\Event;
use App\Core\Form; use App\Core\Form;
use function App\Core\I18n\_m; use function App\Core\I18n\_m;
use App\Core\Log; use App\Core\Log;
use App\Entity\Actor;
use App\Util\Common; use App\Util\Common;
use App\Util\Exception\AuthenticationException; use App\Util\Exception\AuthenticationException;
use App\Util\Exception\NicknameEmptyException; use App\Util\Exception\NicknameEmptyException;
@ -91,8 +92,9 @@ class PersonSettings extends Controller
public function allSettings(Request $request, LanguageController $language): array public function allSettings(Request $request, LanguageController $language): array
{ {
// Ensure the user is logged in and retrieve Actor object for given user // Ensure the user is logged in and retrieve Actor object for given user
$user = Common::ensureLoggedIn(); $user = Common::ensureLoggedIn();
$actor = $user->getActor(); // Must be persisted
$actor = DB::findOneBy(Actor::class, ['id' => $user->getId()]);
$personal_form = ActorForms::personalInfo(request: $request, scope: $actor, target: $actor); $personal_form = ActorForms::personalInfo(request: $request, scope: $actor, target: $actor);
$email_form = self::email($request); $email_form = self::email($request);

View File

@ -55,13 +55,13 @@ class PersonSettingsTest extends GNUsocialTestCase
]); ]);
$changed_user = DB::findOneBy(LocalUser::class, ['id' => $user->getId()]); $changed_user = DB::findOneBy(LocalUser::class, ['id' => $user->getId()]);
$actor = $changed_user->getActor(); $actor = $changed_user->getActor();
static::assertSame($changed_user->getNickname(), 'form_test_user_new_nickname'); static::assertSame('form_test_user_new_nickname', $changed_user->getNickname());
static::assertSame($actor->getNickname(), 'form_test_user_new_nickname'); static::assertSame('form_test_user_new_nickname', $actor->getNickname());
static::assertSame($actor->getFullName(), 'Form User'); static::assertSame('Form User', $actor->getFullName());
static::assertSame($actor->getHomepage(), 'https://gnu.org'); static::assertSame('https://gnu.org', $actor->getHomepage());
static::assertSame($actor->getBio(), 'I was born at a very young age'); static::assertSame('I was born at a very young age', $actor->getBio());
static::assertSame($actor->getLocation(), 'right here'); static::assertSame('right here', $actor->getLocation());
// static::assertSame($changed_user->getPhoneNumber()->getNationalNumber(), '908555842'); // static::assertSame('908555842', $changed_user->getPhoneNumber()->getNationalNumber());
} }
/** /**

View File

@ -0,0 +1,61 @@
<?php
declare(strict_types = 1);
namespace Plugin\ActivityPub\Test\Fixtures;
use App\Core\DB\DB;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Plugin\ActivityPub\Util\Model\Activity;
use Plugin\ActivityPub\Util\Model\Actor;
use Plugin\ActivityPub\Util\Model\Note;
class ActivityPubFixtures extends Fixture
{
private static string $fixtures_path = __DIR__ . \DIRECTORY_SEPARATOR;
public static function fixturesPath(string $path, string $ontology = 'gnusocial'): string
{
return self::$fixtures_path . $ontology . \DIRECTORY_SEPARATOR . $path;
}
public function load(ObjectManager $manager)
{
/*
* Beware that it's important to Load Actors, Objects, Activities in this sequence
* because we're running offline tests here.
*/
$ontology = 'gnusocial';
// Load Actors
$person_path = self::fixturesPath('objects/person.jsonld', $ontology);
$person = Actor::fromJson(fread(fopen($person_path, 'r'), filesize($person_path)));
DB::flush();
$group_path = self::fixturesPath('objects/group.jsonld', $ontology);
$group = Actor::fromJson(fread(fopen($group_path, 'r'), filesize($group_path)));
DB::flush();
// Load Objects
$note_path = self::fixturesPath('objects/note.jsonld', $ontology);
$note = Note::fromJson(fread(fopen($note_path, 'r'), filesize($note_path)));
DB::flush();
$page_path = self::fixturesPath('objects/page.jsonld', $ontology);
$page = Note::fromJson(fread(fopen($page_path, 'r'), filesize($page_path)));
DB::flush();
$reply_path = self::fixturesPath('objects/reply.jsonld', $ontology);
$reply = Note::fromJson(fread(fopen($reply_path, 'r'), filesize($reply_path)));
DB::flush();
// Load Activities
$create_note_path = self::fixturesPath('activities/create_note.jsonld', $ontology);
$create_note = Activity::fromJson(fread(fopen($create_note_path, 'r'), filesize($create_note_path)));
DB::flush();
$create_page_path = self::fixturesPath('activities/create_page.jsonld', $ontology);
$create_page = Activity::fromJson(fread(fopen($create_page_path, 'r'), filesize($create_page_path)));
DB::flush();
$create_reply_path = self::fixturesPath('activities/create_reply.jsonld', $ontology);
$create_reply = Activity::fromJson(fread(fopen($create_reply_path, 'r'), filesize($create_reply_path)));
DB::flush();
}
}

View File

@ -19,14 +19,14 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/activity/1337", "id": "https://instance.gnusocial.test/activity/1337",
"published": "2022-03-01T20:58:48+00:00", "published": "2022-03-01T20:58:48+00:00",
"actor": "https://testv3.gnusocial.rocks/actor/42", "actor": "https://instance.gnusocial.test/actor/42",
"object": { "object": {
"type": "Note", "type": "Note",
"id": "https://testv3.gnusocial.rocks/object/note/1337", "id": "https://instance.gnusocial.test/object/note/1337",
"published": "2022-03-10T23:07:50+00:00", "published": "2022-03-10T23:07:50+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"content": "<p>hello, world.</p>", "content": "<p>hello, world.</p>",
"mediaType": "text/html", "mediaType": "text/html",
"source": { "source": {
@ -35,18 +35,18 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inConversation": "https://testv3.gnusocial.rocks/conversation/1337", "inConversation": "https://instance.gnusocial.test/conversation/1337",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
}, },
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
} }

View File

@ -19,14 +19,14 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/activity/1338", "id": "https://instance.gnusocial.test/activity/1338",
"published": "2022-03-01T18:19:51+00:00", "published": "2022-03-01T18:19:51+00:00",
"actor": "https://testv3.gnusocial.rocks/actor/42", "actor": "https://instance.gnusocial.test/actor/42",
"object": { "object": {
"type": "Page", "type": "Page",
"id": "https://testv3.gnusocial.rocks/object/note/1338", "id": "https://instance.gnusocial.test/object/note/1338",
"published": "2022-03-01T22:44:29+00:00", "published": "2022-03-01T22:44:29+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"name": "hello, world.", "name": "hello, world.",
"content": "<p>This is an interesting page.</p>", "content": "<p>This is an interesting page.</p>",
"mediaType": "text/html", "mediaType": "text/html",
@ -36,20 +36,20 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inConversation": "https://testv3.gnusocial.rocks/conversation/1338", "inConversation": "https://instance.gnusocial.test/conversation/1338",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers", "https://instance.gnusocial.test/actor/42/subscribers",
"https://testv3.gnusocial.rocks/actor/21" "https://instance.gnusocial.test/actor/21"
] ]
}, },
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers", "https://instance.gnusocial.test/actor/42/subscribers",
"https://testv3.gnusocial.rocks/actor/21" "https://instance.gnusocial.test/actor/21"
] ]
} }

View File

@ -19,14 +19,14 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/activity/1339", "id": "https://instance.gnusocial.test/activity/1339",
"published": "2022-03-01T20:58:48+00:00", "published": "2022-03-01T20:58:48+00:00",
"actor": "https://testv3.gnusocial.rocks/actor/42", "actor": "https://instance.gnusocial.test/actor/42",
"object": { "object": {
"type": "Note", "type": "Note",
"id": "https://testv3.gnusocial.rocks/object/note/1339", "id": "https://instance.gnusocial.test/object/note/1339",
"published": "2022-03-01T21:00:16+00:00", "published": "2022-03-01T21:00:16+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"content": "<p>yay ^^</p>", "content": "<p>yay ^^</p>",
"mediaType": "text/html", "mediaType": "text/html",
"source": { "source": {
@ -35,19 +35,19 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inReplyTo": "https://testv3.gnusocial.rocks/object/note/1338", "inReplyTo": "https://instance.gnusocial.test/object/note/1338",
"inConversation": "https://testv3.gnusocial.rocks/conversation/1338", "inConversation": "https://instance.gnusocial.test/conversation/1338",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
}, },
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
} }

View File

@ -20,23 +20,23 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/actor/21", "id": "https://instance.gnusocial.test/actor/21",
"inbox": "https://testv3.gnusocial.rocks/actor/21/inbox.json", "inbox": "https://instance.gnusocial.test/actor/21/inbox.json",
"outbox": "https://testv3.gnusocial.rocks/actor/21/outbox.json", "outbox": "https://instance.gnusocial.test/actor/21/outbox.json",
"following": "https://testv3.gnusocial.rocks/actor/21/subscriptions", "following": "https://instance.gnusocial.test/actor/21/subscriptions",
"followers": "https://testv3.gnusocial.rocks/actor/21/subscribers", "followers": "https://instance.gnusocial.test/actor/21/subscribers",
"liked": "https://testv3.gnusocial.rocks/actor/21/favourites", "liked": "https://instance.gnusocial.test/actor/21/favourites",
"preferredUsername": "hackers", "preferredUsername": "hackers",
"publicKey": { "publicKey": {
"id": "https://testv3.gnusocial.rocks/actor/2#public-key", "id": "https://instance.gnusocial.test/actor/2#public-key",
"owner": "https://testv3.gnusocial.rocks/actor/2", "owner": "https://instance.gnusocial.test/actor/2",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoZyKL+GyJbTV/ilVBlzz\n8OL/UwNi3KpfV5kQwXU0pPcBbw6y2JOfWnKUT1CfiHG3ntiOFnc+wQfHZk4hRSE8\n9Xe/G5Y215xW+gqx/kjt2GOENqzSzYXdEZ5Qsx6yumZD/yb6VZK9Og0HjX2mpRs9\nbactY76w4BQVntjZ17gSkMhYcyPFZTAIe7QDkeSPk5lkXfTwtaB3YcJSbQ3+s7La\npeEgukQDkrLUIP6cxayKrgUl4fhHdpx1Yk4Bzd/1XkZCjeBca94lP1p2M12amI+Z\nOLSTuLyEiCcku8aN+Ms9plwATmIDaGvKFVk0YVtBHdIJlYXV0yIscab3bqyhsLBK\njwIDAQAB\n-----END PUBLIC KEY-----\n" "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoZyKL+GyJbTV/ilVBlzz\n8OL/UwNi3KpfV5kQwXU0pPcBbw6y2JOfWnKUT1CfiHG3ntiOFnc+wQfHZk4hRSE8\n9Xe/G5Y215xW+gqx/kjt2GOENqzSzYXdEZ5Qsx6yumZD/yb6VZK9Og0HjX2mpRs9\nbactY76w4BQVntjZ17gSkMhYcyPFZTAIe7QDkeSPk5lkXfTwtaB3YcJSbQ3+s7La\npeEgukQDkrLUIP6cxayKrgUl4fhHdpx1Yk4Bzd/1XkZCjeBca94lP1p2M12amI+Z\nOLSTuLyEiCcku8aN+Ms9plwATmIDaGvKFVk0YVtBHdIJlYXV0yIscab3bqyhsLBK\njwIDAQAB\n-----END PUBLIC KEY-----\n"
}, },
"name": "Hackers!", "name": "Hackers!",
"published": "2022-02-23T21:54:52+00:00", "published": "2022-02-23T21:54:52+00:00",
"updated": "2022-02-23T21:55:16+00:00", "updated": "2022-02-23T21:55:16+00:00",
"url": "https://testv3.gnusocial.rocks/!hackers", "url": "https://instance.gnusocial.test/!hackers",
"endpoints": { "endpoints": {
"sharedInbox": "https://testv3.gnusocial.rocks/inbox.json" "sharedInbox": "https://instance.gnusocial.test/inbox.json"
} }
} }

View File

@ -19,9 +19,9 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/object/note/1337", "id": "https://instance.gnusocial.test/object/note/1337",
"published": "2022-03-10T23:07:50+00:00", "published": "2022-03-10T23:07:50+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"content": "<p>hello, world.</p>", "content": "<p>hello, world.</p>",
"mediaType": "text/html", "mediaType": "text/html",
"source": { "source": {
@ -30,11 +30,11 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inConversation": "https://testv3.gnusocial.rocks/conversation/1337", "inConversation": "https://instance.gnusocial.test/conversation/1337",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
} }

View File

@ -19,9 +19,9 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/object/note/1338", "id": "https://instance.gnusocial.test/object/note/1338",
"published": "2022-03-01T22:44:29+00:00", "published": "2022-03-01T22:44:29+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"name": "hello, world.", "name": "hello, world.",
"content": "<p>This is an interesting page.</p>", "content": "<p>This is an interesting page.</p>",
"mediaType": "text/html", "mediaType": "text/html",
@ -31,12 +31,12 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inConversation": "https://testv3.gnusocial.rocks/conversation/1338", "inConversation": "https://instance.gnusocial.test/conversation/1338",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers", "https://instance.gnusocial.test/actor/42/subscribers",
"https://testv3.gnusocial.rocks/actor/21" "https://instance.gnusocial.test/actor/21"
] ]
} }

View File

@ -20,23 +20,23 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/actor/42", "id": "https://instance.gnusocial.test/actor/42",
"inbox": "https://testv3.gnusocial.rocks/actor/42/inbox.json", "inbox": "https://instance.gnusocial.test/actor/42/inbox.json",
"outbox": "https://testv3.gnusocial.rocks/actor/42/outbox.json", "outbox": "https://instance.gnusocial.test/actor/42/outbox.json",
"following": "https://testv3.gnusocial.rocks/actor/42/subscriptions", "following": "https://instance.gnusocial.test/actor/42/subscriptions",
"followers": "https://testv3.gnusocial.rocks/actor/42/subscribers", "followers": "https://instance.gnusocial.test/actor/42/subscribers",
"liked": "https://testv3.gnusocial.rocks/actor/42/favourites", "liked": "https://instance.gnusocial.test/actor/42/favourites",
"preferredUsername": "diogo", "preferredUsername": "diogo",
"publicKey": { "publicKey": {
"id": "https://testv3.gnusocial.rocks/actor/42#public-key", "id": "https://instance.gnusocial.test/actor/42#public-key",
"owner": "https://testv3.gnusocial.rocks/actor/42", "owner": "https://instance.gnusocial.test/actor/42",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArBB+3ldwA2qC1hQTtIho\n9KYhvvMlPdydn8dA6OlyIQ3Jy57ADt2e144jDSY5RQ3esmzWm2QqsI8rAsZsAraO\nl2+855y7Fw35WH4GBc7PJ6MLAEvMk1YWeS/rttXaDzh2i4n/AXkMuxDjS1IBqw2w\nn0qTz2sdGcBJ+mop6AB9Qt2lseBc5IW040jSnfLEDDIaYgoc5m2yRsjGKItOh3BG\njGHDb6JB9FySToSMGIt0/tE5k06wfvAxtkxX5dfGeKtciBpC2MGT169iyMIOM8DN\nFhSl8mowtV1NJQ7nN692USrmNvSJjqe9ugPCDPPvwQ5A6A61Qrgpz5pav/o5Sz69\nzQIDAQAB\n-----END PUBLIC KEY-----\n" "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArBB+3ldwA2qC1hQTtIho\n9KYhvvMlPdydn8dA6OlyIQ3Jy57ADt2e144jDSY5RQ3esmzWm2QqsI8rAsZsAraO\nl2+855y7Fw35WH4GBc7PJ6MLAEvMk1YWeS/rttXaDzh2i4n/AXkMuxDjS1IBqw2w\nn0qTz2sdGcBJ+mop6AB9Qt2lseBc5IW040jSnfLEDDIaYgoc5m2yRsjGKItOh3BG\njGHDb6JB9FySToSMGIt0/tE5k06wfvAxtkxX5dfGeKtciBpC2MGT169iyMIOM8DN\nFhSl8mowtV1NJQ7nN692USrmNvSJjqe9ugPCDPPvwQ5A6A61Qrgpz5pav/o5Sz69\nzQIDAQAB\n-----END PUBLIC KEY-----\n"
}, },
"name": "Diogo Peralta Cordeiro", "name": "Diogo Peralta Cordeiro",
"published": "2022-02-23T17:20:30+00:00", "published": "2022-02-23T17:20:30+00:00",
"updated": "2022-02-25T02:12:48+00:00", "updated": "2022-02-25T02:12:48+00:00",
"url": "https://testv3.gnusocial.rocks/@diogo", "url": "https://instance.gnusocial.test/@diogo",
"endpoints": { "endpoints": {
"sharedInbox": "https://testv3.gnusocial.rocks/inbox.json" "sharedInbox": "https://instance.gnusocial.test/inbox.json"
} }
} }

View File

@ -19,9 +19,9 @@
} }
} }
], ],
"id": "https://testv3.gnusocial.rocks/object/note/1339", "id": "https://instance.gnusocial.test/object/note/1339",
"published": "2022-03-01T21:00:16+00:00", "published": "2022-03-01T21:00:16+00:00",
"attributedTo": "https://testv3.gnusocial.rocks/actor/42", "attributedTo": "https://instance.gnusocial.test/actor/42",
"content": "<p>yay ^^</p>", "content": "<p>yay ^^</p>",
"mediaType": "text/html", "mediaType": "text/html",
"source": { "source": {
@ -30,12 +30,12 @@
}, },
"attachment": [], "attachment": [],
"tag": [], "tag": [],
"inReplyTo": "https://testv3.gnusocial.rocks/object/note/1338", "inReplyTo": "https://instance.gnusocial.test/object/note/1338",
"inConversation": "https://testv3.gnusocial.rocks/conversation/1338", "inConversation": "https://instance.gnusocial.test/conversation/1338",
"to": [ "to": [
"https://www.w3.org/ns/activitystreams#Public" "https://www.w3.org/ns/activitystreams#Public"
], ],
"cc": [ "cc": [
"https://testv3.gnusocial.rocks/actor/42/subscribers" "https://instance.gnusocial.test/actor/42/subscribers"
] ]
} }

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace Plugin\ActivityPub\tests\Objects; namespace Plugin\ActivityPub\Test\Objects;
use App\Entity\Actor; use App\Entity\Actor;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;
@ -29,16 +29,18 @@ use Plugin\ActivityPub\Entity\ActivitypubActor;
use Plugin\ActivityPub\Entity\ActivitypubRsa; use Plugin\ActivityPub\Entity\ActivitypubRsa;
use Plugin\ActivityPub\Util\Explorer; use Plugin\ActivityPub\Util\Explorer;
class GSGroupTest extends GNUsocialTestCase class GSActorGroupTest extends GNUsocialTestCase
{ {
public function testGroupFromJson() public function testGroupFromJson()
{ {
$group = Explorer::getOneFromUri('https://testv3.gnusocial.rocks/actor/21', try_online: false); self::bootKernel();
$group = Explorer::getOneFromUri('https://instance.gnusocial.test/actor/21', try_online: false);
$ap_group = ActivitypubActor::getByPK(['actor_id' => $group->getId()]); $ap_group = ActivitypubActor::getByPK(['actor_id' => $group->getId()]);
static::assertSame('https://testv3.gnusocial.rocks/actor/21/inbox.json', $ap_group->getInboxUri()); static::assertSame('https://instance.gnusocial.test/actor/21/inbox.json', $ap_group->getInboxUri());
static::assertSame('https://testv3.gnusocial.rocks/inbox.json', $ap_group->getInboxSharedUri()); static::assertSame('https://instance.gnusocial.test/inbox.json', $ap_group->getInboxSharedUri());
$group = $ap_group->getActor(); $group = $ap_group->getActor();
static::assertSame('https://testv3.gnusocial.rocks/actor/21', $group->getUri()); static::assertSame('https://instance.gnusocial.test/actor/21', $group->getUri());
static::assertSame(Actor::GROUP, $group->getType()); static::assertSame(Actor::GROUP, $group->getType());
static::assertSame('hackers', $group->getNickname()); static::assertSame('hackers', $group->getNickname());
static::assertSame('Hackers!', $group->getFullname()); static::assertSame('Hackers!', $group->getFullname());

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace Plugin\ActivityPub\tests\Objects; namespace Plugin\ActivityPub\Test\Objects;
use App\Entity\Actor; use App\Entity\Actor;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;
@ -29,16 +29,18 @@ use Plugin\ActivityPub\Entity\ActivitypubActor;
use Plugin\ActivityPub\Entity\ActivitypubRsa; use Plugin\ActivityPub\Entity\ActivitypubRsa;
use Plugin\ActivityPub\Util\Explorer; use Plugin\ActivityPub\Util\Explorer;
class GSPersonTest extends GNUsocialTestCase class GSActorPersonTest extends GNUsocialTestCase
{ {
public function testPersonFromJson() public function testPersonFromJson()
{ {
$person = Explorer::getOneFromUri('https://testv3.gnusocial.rocks/actor/42', try_online: false); self::bootKernel();
$person = Explorer::getOneFromUri('https://instance.gnusocial.test/actor/42', try_online: false);
$ap_person = ActivitypubActor::getByPK(['actor_id' => $person->getId()]); $ap_person = ActivitypubActor::getByPK(['actor_id' => $person->getId()]);
static::assertSame('https://testv3.gnusocial.rocks/actor/42/inbox.json', $ap_person->getInboxUri()); static::assertSame('https://instance.gnusocial.test/actor/42/inbox.json', $ap_person->getInboxUri());
static::assertSame('https://testv3.gnusocial.rocks/inbox.json', $ap_person->getInboxSharedUri()); static::assertSame('https://instance.gnusocial.test/inbox.json', $ap_person->getInboxSharedUri());
$person = $ap_person->getActor(); $person = $ap_person->getActor();
static::assertSame('https://testv3.gnusocial.rocks/actor/42', $person->getUri()); static::assertSame('https://instance.gnusocial.test/actor/42', $person->getUri());
static::assertSame(Actor::PERSON, $person->getType()); static::assertSame(Actor::PERSON, $person->getType());
static::assertSame('diogo', $person->getNickname()); static::assertSame('diogo', $person->getNickname());
static::assertSame('Diogo Peralta Cordeiro', $person->getFullname()); static::assertSame('Diogo Peralta Cordeiro', $person->getFullname());

View File

@ -188,7 +188,7 @@ class Note extends Model
$attention_targets = []; $attention_targets = [];
foreach ($to as $target) { foreach ($to as $target) {
if ($target === 'https://www.w3.org/ns/activitystreams#Public') { if (\in_array($target, ActivityPub::PUBLIC_TO)) {
continue; continue;
} }
try { try {
@ -217,7 +217,7 @@ class Note extends Model
} }
foreach ($cc as $target) { foreach ($cc as $target) {
if ($target === 'https://www.w3.org/ns/activitystreams#Public') { if (\in_array($target, ActivityPub::PUBLIC_TO)) {
continue; continue;
} }
try { try {

View File

@ -1,53 +0,0 @@
<?php
declare(strict_types = 1);
namespace Plugin\ActivityPub\Test\Fixtures;
use App\Core\DB\DB;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
use Plugin\ActivityPub\Util\Model\Activity;
use Plugin\ActivityPub\Util\Model\Actor;
use Plugin\ActivityPub\Util\Model\Note;
class ActivityPubFixtures extends Fixture
{
private static string $fixtures_path = INSTALLDIR . '/plugins/ActivityPub/tests/fixtures';
public static function fixturesPath(string $path, string $ontology = 'gnusocial'): string
{
return self::$fixtures_path . \DIRECTORY_SEPARATOR . $ontology . \DIRECTORY_SEPARATOR . $path;
}
public function load(ObjectManager $manager)
{
/*
* Beware that it's important to Load Actors, Objects, Activities in this sequence
* because we're running offline tests here.
*/
$ontology = 'gnusocial';
// Load Actors
$person = Actor::fromJson(file_get_contents(self::fixturesPath('objects/person.jsonld', $ontology)));
DB::flush();
$group = Actor::fromJson(file_get_contents(self::fixturesPath('objects/group.jsonld', $ontology)));
DB::flush();
// Load Objects
$note = Note::fromJson(file_get_contents(self::fixturesPath('objects/note.jsonld', $ontology)));
DB::flush();
$page = Note::fromJson(file_get_contents(self::fixturesPath('objects/page.jsonld', $ontology)));
DB::flush();
$reply = Note::fromJson(file_get_contents(self::fixturesPath('objects/reply.jsonld', $ontology)));
DB::flush();
// Load Activities
$create_note = Activity::fromJson(file_get_contents(self::fixturesPath('activities/create_note.jsonld', $ontology)));
DB::flush();
$create_page = Activity::fromJson(file_get_contents(self::fixturesPath('activities/create_page.jsonld', $ontology)));
DB::flush();
$create_reply = Activity::fromJson(file_get_contents(self::fixturesPath('activities/create_reply.jsonld', $ontology)));
DB::flush();
}
}

View File

@ -196,6 +196,8 @@ abstract class Form
} }
DB::flush(); DB::flush();
} else {
throw new ClientException('Invalid Form submitted.');
} }
} }

View File

@ -36,12 +36,14 @@ use App\Core\GNUsocial;
use Functional as F; use Functional as F;
use ReflectionClass; use ReflectionClass;
use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\KernelBrowser;
use Symfony\Bundle\FrameworkBundle\Test\TestContainer;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpKernel\KernelInterface; use Symfony\Component\HttpKernel\KernelInterface;
class GNUsocialTestCase extends WebTestCase class GNUsocialTestCase extends WebTestCase
{ {
private static GNUsocial $social; private static GNUsocial $social;
protected static TestContainer|null $container = null;
/** /**
* Provide our own initialization for testing * Provide our own initialization for testing
@ -62,10 +64,10 @@ class GNUsocialTestCase extends WebTestCase
private static function do_setup() private static function do_setup()
{ {
$container = self::$kernel->getContainer()->get('test.service_container'); static::$container = self::$kernel->getContainer()->get('test.service_container');
$services = F\map( $services = F\map(
(new ReflectionClass(GNUsocial::class))->getMethod('__construct')->getParameters(), (new ReflectionClass(GNUsocial::class))->getMethod('__construct')->getParameters(),
fn ($p) => $container->get((string) $p->getType()), fn ($p) => static::$container->get((string) $p->getType()),
); );
self::$social = new GNUsocial(...$services); self::$social = new GNUsocial(...$services);
} }

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Controller; namespace App\Test\Controller;
use App\Core\DB\DB; use App\Core\DB\DB;
use App\Entity\LocalUser; use App\Entity\LocalUser;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Controller; namespace App\Test\Controller;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;

View File

@ -21,15 +21,15 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\Cache; use App\Core\Cache;
use App\Util\Common; use App\Util\Common;
use App\Util\GNUsocialTestCase;
use ReflectionClass; use ReflectionClass;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface; use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
class CacheTest extends KernelTestCase class CacheTest extends GNUsocialTestCase
{ {
private function doTest(array $adapters, $result_pool, $throws = null, $recompute = \INF) private function doTest(array $adapters, $result_pool, $throws = null, $recompute = \INF)
{ {
@ -38,7 +38,7 @@ class CacheTest extends KernelTestCase
// Setup Common::config to have the values in $conf // Setup Common::config to have the values in $conf
$conf = ['cache' => ['adapters' => $adapters, 'early_recompute' => $recompute]]; $conf = ['cache' => ['adapters' => $adapters, 'early_recompute' => $recompute]];
$cb = $this->createMock(ContainerBagInterface::class); $cb = $this->createMock(ContainerBagInterface::class);
static::assertTrue($cb instanceof ContainerBagInterface); static::assertInstanceOf(ContainerBagInterface::class, $cb);
$cb->method('get') $cb->method('get')
->willReturnMap([['gnusocial', $conf], ['gnusocial_defaults', $conf]]); ->willReturnMap([['gnusocial', $conf], ['gnusocial_defaults', $conf]]);
Common::setupConfig($cb); Common::setupConfig($cb);

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;
use Jchook\AssertThrows\AssertThrows; use Jchook\AssertThrows\AssertThrows;

View File

@ -19,7 +19,7 @@ declare(strict_types = 1);
// along with GNU social. If not, see <http://www.gnu.org/licenses/>. // along with GNU social. If not, see <http://www.gnu.org/licenses/>.
// }}} // }}}
namespace App\Tests\Core\DB; namespace App\Test\Core\DB;
use App\Core\ActorLocalRoles; use App\Core\ActorLocalRoles;
use App\Core\DB\DB; use App\Core\DB\DB;
@ -66,7 +66,7 @@ class DBTest extends GNUsocialTestCase
{ {
static::bootKernel(); static::bootKernel();
$actor = DB::findOneBy('actor', ['nickname' => 'taken_user']); $actor = DB::findOneBy('actor', ['nickname' => 'taken_user']);
static::assertTrue($actor instanceof Actor); static::assertInstanceOf(Actor::class, $actor);
static::assertThrows(DuplicateFoundException::class, fn () => DB::findOneBy('actor', ['is_null' => 'bio'])); static::assertThrows(DuplicateFoundException::class, fn () => DB::findOneBy('actor', ['is_null' => 'bio']));
static::assertThrows(NotFoundException::class, fn () => DB::findOneBy('actor', ['nickname' => 'nickname_not_in_use'])); static::assertThrows(NotFoundException::class, fn () => DB::findOneBy('actor', ['nickname' => 'nickname_not_in_use']));
@ -86,6 +86,6 @@ class DBTest extends GNUsocialTestCase
$id = DB::persistWithSameId($actor, $user, fn ($id) => $id); $id = DB::persistWithSameId($actor, $user, fn ($id) => $id);
static::assertTrue($id != 0); static::assertTrue($id != 0);
static::assertTrue($actor->getId() == $id); static::assertTrue($actor->getId() == $id);
static::assertTrue($user->getId() == $id); static::assertTrue($user->getId() == $id);
} }
} }

View File

@ -19,7 +19,7 @@ declare(strict_types = 1);
// along with GNU social. If not, see <http://www.gnu.org/licenses/>. // along with GNU social. If not, see <http://www.gnu.org/licenses/>.
// }}} // }}}
namespace App\Tests\Core\DB; namespace App\Test\Core\DB;
use App\Core\DB\DB; use App\Core\DB\DB;
use App\Core\DB\UpdateListener; use App\Core\DB\UpdateListener;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\DB\DB; use App\Core\DB\DB;
use App\Entity\LocalUser; use App\Entity\LocalUser;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\Event; use App\Core\Event;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\ActorLocalRoles; use App\Core\ActorLocalRoles;
use App\Core\DB\DB; use App\Core\DB\DB;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\GSFile; use App\Core\GSFile;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;

View File

@ -19,15 +19,15 @@ declare(strict_types = 1);
// along with GNU social. If not, see <http://www.gnu.org/licenses/>. // along with GNU social. If not, see <http://www.gnu.org/licenses/>.
// }}} // }}}
namespace App\Tests\Core\I18n; namespace App\Test\Core\I18n;
use function App\Core\I18n\_m; use function App\Core\I18n\_m;
use App\Core\I18n\I18n; use App\Core\I18n\I18n;
use App\Util\GNUsocialTestCase;
use InvalidArgumentException; use InvalidArgumentException;
use Jchook\AssertThrows\AssertThrows; use Jchook\AssertThrows\AssertThrows;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class I18nTest extends KernelTestCase class I18nTest extends GNUsocialTestCase
{ {
use AssertThrows; use AssertThrows;

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Test\Core;
use App\Core\Router\RouteLoader; use App\Core\Router\RouteLoader;
use App\Core\Router\Router; use App\Core\Router\Router;

View File

@ -109,10 +109,10 @@ class CoreFixtures extends Fixture
$manager->persist(Notification::create(['activity_id' => $activity->getId(), 'target_id' => $local_entities['taken_private_group']->getActorId(), 'reason' => 'testing'])); $manager->persist(Notification::create(['activity_id' => $activity->getId(), 'target_id' => $local_entities['taken_private_group']->getActorId(), 'reason' => 'testing']));
} }
$manager->persist(Attention::create(['note_id' => $public_group_note->getId(), 'target_id' => $local_entities['taken_public_group']->getActorId()])); $manager->persist(Attention::create(['object_type' => Note::schemaName(), 'object_id' => $public_group_note->getId(), 'target_id' => $local_entities['taken_public_group']->getActorId()]));
$manager->persist(GroupMember::create(['group_id' => $local_entities['taken_private_group']->getActorId(), 'actor_id' => $actors['some_user']->getId()])); $manager->persist(GroupMember::create(['group_id' => $local_entities['taken_private_group']->getActorId(), 'actor_id' => $actors['some_user']->getId()]));
$manager->persist(Attention::create(['note_id' => $private_group_note->getId(), 'target_id' => $local_entities['taken_private_group']->getActorId()])); $manager->persist(Attention::create(['object_type' => Note::schemaName(), 'object_id' => $private_group_note->getId(), 'target_id' => $local_entities['taken_private_group']->getActorId()]));
$manager->flush(); $manager->flush();
} }