ActivityPubユニットテストの追加って・・・

諏訪子 <suwako@076.moe>、2025-12-22 23:10
コミット decf69e8b4270e064b9dcd6441750832073008d0 ・親 05f02e7 ・ファイルを見る

1個のファイル、+79 -0

@@ -0,0 +1,79 @@
1+<?php
2+namespace Site\Test;
3+
4+require_once __DIR__.'/../../../autoload.php';
5+
6+use Site\Lib\Tester;
7+use Site\Lib\Activitypub;
8+use Site\Controller\BlogPost;
9+
10+if (ACTIVITYPUB_ENABLED) {
11+ $test = new Tester([
12+ 'colorOutput' => true,
13+ 'verboseOutput' => true
14+ ]);
15+
16+ /*
17+ postInbox(array $activity): void
18+ update(): string
19+ sendActorUpdate(array $params): void
20+ */
21+
22+ $test->describe('ActivityPub情報の受け取り', function($test): void {
23+ $test->it('このインスタンスのユーザーを受け取れるはず', function($test): void {
24+ $ap = new Activitypub();
25+ $res = $ap->getActor();
26+ $test->assertNotNull($res);
27+ $json = json_decode($res, true);
28+
29+ $expect = 'Person';
30+ $test->assertEquals($json['type'], $expect);
31+
32+ $expect = 'http://127.0.0.1:8000';
33+ $test->assertEquals($json['url'], $expect);
34+
35+ $expect = 'http://127.0.0.1:8000/ap/actor';
36+ $test->assertEquals($json['id'], $expect);
37+
38+ $expect = 'http://127.0.0.1:8000/ap/inbox';
39+ $test->assertEquals($json['inbox'], $expect);
40+
41+ $expect = 'http://127.0.0.1:8000/ap/outbox';
42+ $test->assertEquals($json['outbox'], $expect);
43+
44+ $expect = 'http://127.0.0.1:8000/ap/followers';
45+ $test->assertEquals($json['followers'], $expect);
46+
47+ $expect = 'http://127.0.0.1:8000/ap/following';
48+ $test->assertEquals($json['following'], $expect);
49+ });
50+
51+ $test->it('アクティビティを受け取れるはず', function($test): void {
52+ $blog = new BlogPost;
53+ $posts = $blog->getPosts('/blog/');
54+ $ap = new Activitypub($posts);
55+ $res = $ap->getActivity('a8c04518-4181-4ec6-9ef0-3f88f23b84b6'); // /blog/feature-test
56+ $test->assertNotNull($res);
57+ $json = json_decode($res, true);
58+
59+ $expect = 'Create';
60+ $test->assertEquals($json['type'], $expect);
61+
62+ $expect = '【マークダウン】関数';
63+ $test->assertEquals($json['object']['name'], $expect);
64+
65+ $expect = 'https://www.w3.org/ns/activitystreams#Public';
66+ $test->assertEquals($json['object']['to'][0], $expect);
67+
68+ $expect = 'zBbw7K7L1dEwr6htZX5JevRv3oLtHwXQU4o5jT8jn9RKF';
69+ $test->assertEquals($json['attachment'][0]['digestMultibase'], $expect);
70+
71+ $expect = 'http://127.0.0.1:8000/static/article/o_53803618dc1691.28179609-orig.jpg';
72+ $test->assertEquals($json['attachment'][0]['url'], $expect);
73+ });
74+ });
75+
76+ // TODO: 未完了
77+
78+ $test->printSummary();
79+}