merge upstream
This commit is contained in:
@@ -17,7 +17,6 @@ services:
|
||||
- ./.config/docker.env
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
- COREPACK_DEFAULT_TO_LATEST=0
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ../../../built
|
||||
@@ -75,6 +74,10 @@ services:
|
||||
source: ../../../pnpm-workspace.yaml
|
||||
target: /misskey/pnpm-workspace.yaml
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ../../../scripts/dependency-patches
|
||||
target: /misskey/scripts/dependency-patches
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ./certificates/rootCA.crt
|
||||
target: /usr/local/share/ca-certificates/rootCA.crt
|
||||
@@ -82,7 +85,7 @@ services:
|
||||
working_dir: /misskey
|
||||
command: >
|
||||
bash -c "
|
||||
corepack enable && corepack prepare
|
||||
npm install -g pnpm
|
||||
pnpm -F backend migrate
|
||||
pnpm -F backend start
|
||||
"
|
||||
|
||||
@@ -9,7 +9,7 @@ services:
|
||||
service: misskey
|
||||
command: >
|
||||
bash -c "
|
||||
corepack enable && corepack prepare
|
||||
npm install -g pnpm
|
||||
pnpm -F backend i
|
||||
pnpm -F misskey-js i
|
||||
pnpm -F misskey-reversi i
|
||||
@@ -20,12 +20,15 @@ services:
|
||||
depends_on:
|
||||
a.test:
|
||||
condition: service_healthy
|
||||
misskey.a.test:
|
||||
condition: service_healthy
|
||||
b.test:
|
||||
condition: service_healthy
|
||||
misskey.b.test:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- NODE_ENV=development
|
||||
- NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt
|
||||
- COREPACK_DEFAULT_TO_LATEST=0
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ../package.json
|
||||
@@ -67,6 +70,10 @@ services:
|
||||
source: ../../../pnpm-workspace.yaml
|
||||
target: /misskey/pnpm-workspace.yaml
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ../../../scripts/dependency-patches
|
||||
target: /misskey/scripts/dependency-patches
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ./certificates/rootCA.crt
|
||||
target: /usr/local/share/ca-certificates/rootCA.crt
|
||||
@@ -74,7 +81,7 @@ services:
|
||||
working_dir: /misskey
|
||||
entrypoint: >
|
||||
bash -c '
|
||||
corepack enable && corepack prepare
|
||||
npm install -g pnpm
|
||||
pnpm -F misskey-js i --frozen-lockfile
|
||||
pnpm -F backend i --frozen-lockfile
|
||||
exec "$0" "$@"
|
||||
@@ -86,8 +93,6 @@ services:
|
||||
depends_on:
|
||||
redis.test:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- COREPACK_DEFAULT_TO_LATEST=0
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ../package.json
|
||||
@@ -113,10 +118,14 @@ services:
|
||||
source: ../../../pnpm-workspace.yaml
|
||||
target: /misskey/pnpm-workspace.yaml
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ../../../scripts/dependency-patches
|
||||
target: /misskey/scripts/dependency-patches
|
||||
read_only: true
|
||||
working_dir: /misskey
|
||||
command: >
|
||||
bash -c "
|
||||
corepack enable && corepack prepare
|
||||
npm install -g pnpm
|
||||
pnpm -F backend i --frozen-lockfile
|
||||
pnpm exec tsc -p ./packages/backend/test-federation
|
||||
node ./packages/backend/test-federation/built/daemon.js
|
||||
|
||||
@@ -35,7 +35,7 @@ describe('Abuse report', () => {
|
||||
const reportsInB = await bModerator.client.request('admin/abuse-user-reports', {});
|
||||
const reportInB = reportsInB.filter(report => report.comment.includes(comment))[0];
|
||||
// NOTE: reporter is not Alice, and is not moderator in A
|
||||
strictEqual(reportInB.reporter.url, 'https://a.test/@instance.actor');
|
||||
strictEqual(reportInB.reporter.url, 'https://a.test/@system.actor');
|
||||
strictEqual(reportInB.targetUserId, bob.id);
|
||||
|
||||
// NOTE: cannot forward multiple times
|
||||
|
||||
@@ -139,29 +139,99 @@ describe('Note', () => {
|
||||
});
|
||||
|
||||
describe('Deletion', () => {
|
||||
describe('Check Delete consistency', () => {
|
||||
let carol: LoginUser;
|
||||
describe('Check Delete is delivered', () => {
|
||||
describe('To followers', () => {
|
||||
let carol: LoginUser;
|
||||
|
||||
beforeAll(async () => {
|
||||
carol = await createAccount('a.test');
|
||||
beforeAll(async () => {
|
||||
carol = await createAccount('a.test');
|
||||
|
||||
await carol.client.request('following/create', { userId: bobInA.id });
|
||||
await sleep();
|
||||
await carol.client.request('following/create', { userId: bobInA.id });
|
||||
await sleep();
|
||||
});
|
||||
|
||||
test('Check', async () => {
|
||||
const note = (await bob.client.request('notes/create', { text: 'I\'m Bob.' })).createdNote;
|
||||
const noteInA = await resolveRemoteNote('b.test', note.id, carol);
|
||||
await bob.client.request('notes/delete', { noteId: note.id });
|
||||
await sleep();
|
||||
|
||||
await rejects(
|
||||
async () => await carol.client.request('notes/show', { noteId: noteInA.id }),
|
||||
(err: any) => {
|
||||
strictEqual(err.code, 'NO_SUCH_NOTE');
|
||||
return true;
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
afterAll(async () => {
|
||||
await carol.client.request('following/delete', { userId: bobInA.id });
|
||||
await sleep();
|
||||
});
|
||||
});
|
||||
|
||||
test('Delete is derivered to followers', async () => {
|
||||
const note = (await bob.client.request('notes/create', { text: 'I\'m Bob.' })).createdNote;
|
||||
const noteInA = await resolveRemoteNote('b.test', note.id, carol);
|
||||
await bob.client.request('notes/delete', { noteId: note.id });
|
||||
await sleep();
|
||||
describe('To renoted and not followed user', () => {
|
||||
test('Check', async () => {
|
||||
const note = (await bob.client.request('notes/create', { text: 'I\'m Bob.' })).createdNote;
|
||||
const noteInA = await resolveRemoteNote('b.test', note.id, alice);
|
||||
await alice.client.request('notes/create', { renoteId: noteInA.id });
|
||||
await sleep();
|
||||
|
||||
await rejects(
|
||||
async () => await carol.client.request('notes/show', { noteId: noteInA.id }),
|
||||
(err: any) => {
|
||||
strictEqual(err.code, 'NO_SUCH_NOTE');
|
||||
return true;
|
||||
},
|
||||
);
|
||||
await bob.client.request('notes/delete', { noteId: note.id });
|
||||
await sleep();
|
||||
|
||||
await rejects(
|
||||
async () => await alice.client.request('notes/show', { noteId: noteInA.id }),
|
||||
(err: any) => {
|
||||
strictEqual(err.code, 'NO_SUCH_NOTE');
|
||||
return true;
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('To replied and not followed user', () => {
|
||||
test('Check', async () => {
|
||||
const note = (await bob.client.request('notes/create', { text: 'I\'m Bob.' })).createdNote;
|
||||
const noteInA = await resolveRemoteNote('b.test', note.id, alice);
|
||||
await alice.client.request('notes/create', { text: 'Hello Bob!', replyId: noteInA.id });
|
||||
await sleep();
|
||||
|
||||
await bob.client.request('notes/delete', { noteId: note.id });
|
||||
await sleep();
|
||||
|
||||
await rejects(
|
||||
async () => await alice.client.request('notes/show', { noteId: noteInA.id }),
|
||||
(err: any) => {
|
||||
strictEqual(err.code, 'NO_SUCH_NOTE');
|
||||
return true;
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* FIXME: not delivered
|
||||
* @see https://github.com/misskey-dev/misskey/issues/15548
|
||||
*/
|
||||
describe('To only resolved and not followed user', () => {
|
||||
test.failing('Check', async () => {
|
||||
const note = (await bob.client.request('notes/create', { text: 'I\'m Bob.' })).createdNote;
|
||||
const noteInA = await resolveRemoteNote('b.test', note.id, alice);
|
||||
await sleep();
|
||||
|
||||
await bob.client.request('notes/delete', { noteId: note.id });
|
||||
await sleep();
|
||||
|
||||
await rejects(
|
||||
async () => await alice.client.request('notes/show', { noteId: noteInA.id }),
|
||||
(err: any) => {
|
||||
strictEqual(err.code, 'NO_SUCH_NOTE');
|
||||
return true;
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ describe('Timeline', () => {
|
||||
});
|
||||
|
||||
type TimelineChannel = keyof Misskey.Channels & (`${string}Timeline` | 'antenna' | 'userList' | 'hashtag');
|
||||
type TimelineEndpoint = keyof Misskey.Endpoints & (`${string}timeline` | 'antennas/notes' | 'roles/notes' | 'notes/search-by-tag');
|
||||
type TimelineEndpoint = keyof Misskey.Endpoints & (`notes/${string}timeline` | 'antennas/notes' | 'roles/notes' | 'notes/search-by-tag');
|
||||
const timelineMap = new Map<TimelineChannel, TimelineEndpoint>([
|
||||
['antenna', 'antennas/notes'],
|
||||
['globalTimeline', 'notes/global-timeline'],
|
||||
|
||||
@@ -37,6 +37,7 @@ describe('User', () => {
|
||||
'id',
|
||||
'host',
|
||||
'avatarUrl',
|
||||
'avatarBlurhash',
|
||||
'instance',
|
||||
'badgeRoles',
|
||||
'url',
|
||||
@@ -379,7 +380,8 @@ describe('User', () => {
|
||||
strictEqual(followers.length, 1); // followed by Bob
|
||||
|
||||
await alice.client.request('i/delete-account', { password: alice.password });
|
||||
await sleep();
|
||||
// NOTE: user deletion query is slow
|
||||
await sleep(4000);
|
||||
|
||||
const following = await bob.client.request('users/following', { userId: bob.id });
|
||||
strictEqual(following.length, 0); // no following relation
|
||||
@@ -477,7 +479,8 @@ describe('User', () => {
|
||||
strictEqual(followers.length, 1); // followed by Bob
|
||||
|
||||
await aAdmin.client.request('admin/suspend-user', { userId: alice.id });
|
||||
await sleep();
|
||||
// NOTE: user deletion query is slow
|
||||
await sleep(4000);
|
||||
|
||||
const following = await bob.client.request('users/following', { userId: bob.id });
|
||||
strictEqual(following.length, 0); // no following relation
|
||||
|
||||
@@ -22,7 +22,7 @@ export type LoginUser = SigninResponse & {
|
||||
client: Misskey.api.APIClient;
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
};
|
||||
|
||||
/** used for avoiding overload and some endpoints */
|
||||
export type Request = <
|
||||
@@ -36,7 +36,7 @@ export type Request = <
|
||||
|
||||
type Host = 'a.test' | 'b.test';
|
||||
|
||||
export async function sleep(ms = 200): Promise<void> {
|
||||
export async function sleep(ms = 250): Promise<void> {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user