Clean up federation test
This commit is contained in:
parent
0f493a241e
commit
40fa71df03
|
@ -21,60 +21,77 @@ async function getTestClientForHs(testMatrixServerUrl) {
|
||||||
return client;
|
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) {
|
async function createTestRoom(client) {
|
||||||
const roomId = await client.createRoom({
|
const roomId = await client.createRoom({
|
||||||
preset: 'public_chat',
|
preset: 'public_chat',
|
||||||
name: 'the hangout spot',
|
name: 'the hangout spot',
|
||||||
});
|
});
|
||||||
|
|
||||||
let eventIds = [];
|
return roomId;
|
||||||
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,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('matrix-public-archive', () => {
|
describe('matrix-public-archive', () => {
|
||||||
it('asdf', async () => {
|
it('Test federation between fixture homeservers', async () => {
|
||||||
const hs1Client = await getTestClientForHs(config.testMatrixServerUrl1);
|
const hs1Client = await getTestClientForHs(config.testMatrixServerUrl1);
|
||||||
const hs2Client = await getTestClientForHs(config.testMatrixServerUrl2);
|
const hs2Client = await getTestClientForHs(config.testMatrixServerUrl2);
|
||||||
|
|
||||||
const { roomId: hs1RoomId, eventIds: room1EventIds } = await createTestRoom(hs1Client);
|
// Create a room on hs2
|
||||||
const { roomId: hs2RoomId, eventIds: room2EventIds } = await createTestRoom(hs2Client);
|
const hs2RoomId = await createTestRoom(hs2Client);
|
||||||
|
const room2EventIds = await createMessagesInRoom(
|
||||||
|
hs2Client,
|
||||||
|
hs2RoomId,
|
||||||
|
10,
|
||||||
|
hs2Client.homeserverUrl
|
||||||
|
);
|
||||||
|
|
||||||
console.log('hs1RoomId', hs1RoomId, room1EventIds);
|
// Join hs1 to a room on hs2 (federation)
|
||||||
console.log('hs2RoomId', hs2RoomId, room2EventIds);
|
await hs1Client.joinRoom(hs2RoomId, 'hs2');
|
||||||
|
|
||||||
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)}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// From, hs1, make sure we can fetch messages from hs2
|
||||||
const messagesEndpoint = urlJoin(
|
const messagesEndpoint = urlJoin(
|
||||||
hs1Client.homeserverUrl,
|
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, {
|
const messageResData = await fetchEndpoint(messagesEndpoint, {
|
||||||
accessToken: hs1Client.accessToken,
|
accessToken: hs1Client.accessToken,
|
||||||
});
|
});
|
||||||
console.log(messageResData);
|
|
||||||
console.log(
|
// Make sure it returned some messages
|
||||||
messageResData.chunk.map((event) => {
|
assert.strictEqual(messageResData.chunk.length, 5);
|
||||||
return `${event.event_id} (${event.type}) - ${event.content.body}`;
|
|
||||||
})
|
// 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`);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue