summaryrefslogtreecommitdiff
path: root/packages/backend/test/e2e/streaming.ts
diff options
context:
space:
mode:
authorzyoshoka <107108195+zyoshoka@users.noreply.github.com>2024-02-28 17:43:17 +0900
committerGitHub <noreply@github.com>2024-02-28 17:43:17 +0900
commit664aeb3ced65f3911c8a21c2d5ffbd1035aec31a (patch)
tree59668cf9cec5f1297dba78d7792aaa621c5ef64f /packages/backend/test/e2e/streaming.ts
parentrefactor(backend): ノートのエクスポート処理でStreams APIを使... (diff)
downloadsharkey-664aeb3ced65f3911c8a21c2d5ffbd1035aec31a.tar.gz
sharkey-664aeb3ced65f3911c8a21c2d5ffbd1035aec31a.tar.bz2
sharkey-664aeb3ced65f3911c8a21c2d5ffbd1035aec31a.zip
fix(backend): リノート時のHTLへのストリーミングの意図しない挙動を修正 (#13425)
* fix(backend): リノート時のストリーミングの意図しない挙動を修正 * Update CHANGELOG.md * fix: 不要な返り値 * fix: 不適切な条件分岐を修正 * test(backend): add htl tests --------- Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Diffstat (limited to 'packages/backend/test/e2e/streaming.ts')
-rw-r--r--packages/backend/test/e2e/streaming.ts65
1 files changed, 61 insertions, 4 deletions
diff --git a/packages/backend/test/e2e/streaming.ts b/packages/backend/test/e2e/streaming.ts
index 071daa275f..13d5a683ba 100644
--- a/packages/backend/test/e2e/streaming.ts
+++ b/packages/backend/test/e2e/streaming.ts
@@ -40,9 +40,9 @@ describe('Streaming', () => {
let chinatsu: misskey.entities.SignupResponse;
let takumi: misskey.entities.SignupResponse;
- let kyokoNote: any;
- let kanakoNote: any;
- let takumiNote: any;
+ let kyokoNote: misskey.entities.Note;
+ let kanakoNote: misskey.entities.Note;
+ let takumiNote: misskey.entities.Note;
let list: any;
beforeAll(async () => {
@@ -68,6 +68,9 @@ describe('Streaming', () => {
// Follow: ayano => akari
await follow(ayano, akari);
+ // Follow: kyoko => chitose
+ await api('following/create', { userId: chitose.id }, kyoko);
+
// Mute: chitose => kanako
await api('mute/create', { userId: kanako.id }, chitose);
@@ -170,7 +173,28 @@ describe('Streaming', () => {
*/
test('フォローしているユーザーのフォローしていないユーザーの visibility: followers な投稿への返信が流れない', async () => {
- // TODO
+ const chitoseNote = await post(chitose, { text: 'followers-only post', visibility: 'followers' });
+
+ const fired = await waitFire(
+ ayano, 'homeTimeline', // ayano:home
+ () => api('notes/create', { text: 'reply to chitose\'s followers-only post', replyId: chitoseNote.id }, kyoko), // kyoko's reply to chitose's followers-only post
+ msg => msg.type === 'note' && msg.body.userId === kyoko.id, // wait kyoko
+ );
+
+ assert.strictEqual(fired, false);
+ });
+
+ test('フォローしているユーザーのフォローしていないユーザーの visibility: followers な投稿への返信のリノートが流れない', async () => {
+ const chitoseNote = await post(chitose, { text: 'followers-only post', visibility: 'followers' });
+ const kyokoReply = await post(kyoko, { text: 'reply to followers-only post', replyId: chitoseNote.id });
+
+ const fired = await waitFire(
+ ayano, 'homeTimeline', // ayano:home
+ () => api('notes/create', { renoteId: kyokoReply.id }, kyoko), // kyoko's renote of kyoko's reply to chitose's followers-only post
+ msg => msg.type === 'note' && msg.body.userId === kyoko.id, // wait kyoko
+ );
+
+ assert.strictEqual(fired, false);
});
test('フォローしていないユーザーの投稿は流れない', async () => {
@@ -202,6 +226,39 @@ describe('Streaming', () => {
assert.strictEqual(fired, false);
});
+
+ test('withRenotes: false のときリノートが流れない', async () => {
+ const fired = await waitFire(
+ ayano, 'homeTimeline', // ayano:home
+ () => api('notes/create', { renoteId: kyokoNote.id }, kyoko), // kyoko renote
+ msg => msg.type === 'note' && msg.body.userId === kyoko.id, // wait kyoko
+ { withRenotes: false },
+ );
+
+ assert.strictEqual(fired, false);
+ });
+
+ test('withRenotes: false のとき引用リノートが流れる', async () => {
+ const fired = await waitFire(
+ ayano, 'homeTimeline', // ayano:home
+ () => api('notes/create', { text: 'quote', renoteId: kyokoNote.id }, kyoko), // kyoko quote
+ msg => msg.type === 'note' && msg.body.userId === kyoko.id, // wait kyoko
+ { withRenotes: false },
+ );
+
+ assert.strictEqual(fired, true);
+ });
+
+ test('withRenotes: false のとき投票のみのリノートが流れる', async () => {
+ const fired = await waitFire(
+ ayano, 'homeTimeline', // ayano:home
+ () => api('notes/create', { poll: { choices: ['kinoko', 'takenoko'] }, renoteId: kyokoNote.id }, kyoko), // kyoko renote with poll
+ msg => msg.type === 'note' && msg.body.userId === kyoko.id, // wait kyoko
+ { withRenotes: false },
+ );
+
+ assert.strictEqual(fired, true);
+ });
}); // Home
describe('Local Timeline', () => {