Clean up federation test

This commit is contained in:
Eric Eastwood 2022-02-22 20:55:42 -06:00
parent 0f493a241e
commit 40fa71df03
1 changed files with 52 additions and 35 deletions

View File

@ -21,60 +21,77 @@ async function getTestClientForHs(testMatrixServerUrl) {
return client;
}
async function createMessagesInRoom(client, roomId, numMessages, prefix) {
let eventIds = [];
for (let i = 0; i < numMessages; i++) {
const eventId = await client.sendMessage(roomId, {
msgtype: 'm.text',
body: `${prefix} - message${i}`,
});
eventIds.push(eventId);
}
return eventIds;
}
async function createTestRoom(client) {
const roomId = await client.createRoom({
preset: 'public_chat',
name: 'the hangout spot',
});
let eventIds = [];
for (let i = 0; i < 100; i++) {
const eventId = await client.sendMessage(roomId, {
msgtype: 'm.text',
body: `${client.homeserverUrl} - message${i}`,
});
eventIds.push(eventId);
}
return {
roomId,
eventIds,
};
return roomId;
}
describe('matrix-public-archive', () => {
it('asdf', async () => {
it('Test federation between fixture homeservers', async () => {
const hs1Client = await getTestClientForHs(config.testMatrixServerUrl1);
const hs2Client = await getTestClientForHs(config.testMatrixServerUrl2);
const { roomId: hs1RoomId, eventIds: room1EventIds } = await createTestRoom(hs1Client);
const { roomId: hs2RoomId, eventIds: room2EventIds } = await createTestRoom(hs2Client);
// Create a room on hs2
const hs2RoomId = await createTestRoom(hs2Client);
const room2EventIds = await createMessagesInRoom(
hs2Client,
hs2RoomId,
10,
hs2Client.homeserverUrl
);
console.log('hs1RoomId', hs1RoomId, room1EventIds);
console.log('hs2RoomId', hs2RoomId, room2EventIds);
try {
await hs1Client.joinRoom(hs2RoomId, 'hs2');
} catch (err) {
throw new Error(
`Stub error to stop matrix-bot-sdk from logging the response statusCode=${
err.statusCode
} body=${JSON.stringify(err.body)}`
);
}
// Join hs1 to a room on hs2 (federation)
await hs1Client.joinRoom(hs2RoomId, 'hs2');
// From, hs1, make sure we can fetch messages from hs2
const messagesEndpoint = urlJoin(
hs1Client.homeserverUrl,
`_matrix/client/r0/rooms/${hs2RoomId}/messages?limit=5&dir=b`
`_matrix/client/r0/rooms/${hs2RoomId}/messages?limit=5&dir=b&filter={"types":["m.room.message"]}`
);
const messageResData = await fetchEndpoint(messagesEndpoint, {
accessToken: hs1Client.accessToken,
});
console.log(messageResData);
console.log(
messageResData.chunk.map((event) => {
return `${event.event_id} (${event.type}) - ${event.content.body}`;
})
);
// Make sure it returned some messages
assert.strictEqual(messageResData.chunk.length, 5);
// Make sure all of the messages belong to the room
messageResData.chunk.map((event) => {
const isEventInRoomFromHs2 = room2EventIds.some((room2EventId) => {
return room2EventId === event.event_id;
});
// Make sure the message belongs to the room on hs2
assert.strictEqual(
isEventInRoomFromHs2,
true,
`Expected ${event.event_id} (${event.type}: "${
event.content.body
}") to be in room on hs2=${JSON.stringify(room2EventIds)}`
);
});
});
it('can render diverse messages');
it(`can render day back in time from room on remote homeserver we haven't backfilled from`);
it(`will redirect to hour pagination when there are too many messages`);
});