mirror of
https://github.com/matrix-org/matrix-hookshot.git
synced 2025-03-10 21:19:13 +00:00

* Split out queue and cache config * Update usages of cache config, * Update default * Cleanup * Make queue optional. * config updates. * changelog * update spec config * Update tests * tweak import * Update default config. * fixup test * Update config.sample.yml Co-authored-by: Andrew Ferrazzutti <andrewf@element.io> Signed-off-by: Will Hunt <will@half-shot.uk> * Update encryption.md Signed-off-by: Will Hunt <will@half-shot.uk> * Clear up worker config Signed-off-by: Will Hunt <will@half-shot.uk> * Update src/config/Config.ts Co-authored-by: Andrew Ferrazzutti <andrewf@element.io> Signed-off-by: Will Hunt <will@half-shot.uk> * update helm config * move UserTokenStore.ts * Port all the imports to new path. * Port RSA handling to rust. * Add tests. * linting * lint rust * Remove unwraps / panics * fix build script * Ensure we store and check with algorithm and key was used. * quieten false deadcode warnings * changelog * fix test imports * lazy mock out UTS * Refactor so that UserTokenStore is initiated by the time Bridge is created. * update defaults * replace if with match * Use the magic of ? * fmt --------- Signed-off-by: Will Hunt <will@half-shot.uk> Co-authored-by: Andrew Ferrazzutti <andrewf@element.io>
63 lines
2.8 KiB
TypeScript
63 lines
2.8 KiB
TypeScript
import { MessageEventContent } from "matrix-bot-sdk";
|
|
import { E2ESetupTestTimeout, E2ETestEnv } from "./util/e2e-test";
|
|
import { describe, it, beforeEach, afterEach } from "@jest/globals";
|
|
import { expect } from "chai";
|
|
|
|
describe('Basic test setup', () => {
|
|
let testEnv: E2ETestEnv;
|
|
|
|
beforeEach(async () => {
|
|
testEnv = await E2ETestEnv.createTestEnv({matrixLocalparts: ['user']});
|
|
await testEnv.setUp();
|
|
}, E2ESetupTestTimeout);
|
|
|
|
afterEach(() => {
|
|
return testEnv?.tearDown();
|
|
});
|
|
|
|
it('should be able to invite the bot to a room', async () => {
|
|
const user = testEnv.getUser('user');
|
|
const roomId = await user.createRoom({ name: 'Test room', invite:[testEnv.botMxid] });
|
|
await user.waitForRoomJoin({sender: testEnv.botMxid, roomId });
|
|
const msg = user.waitForRoomEvent<MessageEventContent>({
|
|
eventType: 'm.room.message', sender: testEnv.botMxid, roomId
|
|
});
|
|
await user.sendText(roomId, "!hookshot help");
|
|
// Expect help text.
|
|
expect((await msg).data.content.body).to.include('!hookshot help` - This help text\n');
|
|
});
|
|
|
|
// TODO: Move test to it's own generic connections file.
|
|
it('should be able to setup a webhook', async () => {
|
|
const user = testEnv.getUser('user');
|
|
const testRoomId = await user.createRoom({ name: 'Test room', invite:[testEnv.botMxid] });
|
|
await user.waitForRoomJoin({sender: testEnv.botMxid, roomId: testRoomId });
|
|
await user.setUserPowerLevel(testEnv.botMxid, testRoomId, 50);
|
|
await user.sendText(testRoomId, "!hookshot webhook test-webhook");
|
|
const inviteResponse = await user.waitForRoomInvite({sender: testEnv.botMxid});
|
|
await user.waitForRoomEvent<MessageEventContent>({
|
|
eventType: 'm.room.message', sender: testEnv.botMxid, roomId: testRoomId,
|
|
body: 'Room configured to bridge webhooks. See admin room for secret url.'
|
|
});
|
|
const webhookUrlMessage = user.waitForRoomEvent<MessageEventContent>({
|
|
eventType: 'm.room.message', sender: testEnv.botMxid, roomId: inviteResponse.roomId
|
|
});
|
|
await user.joinRoom(inviteResponse.roomId);
|
|
const msgData = (await webhookUrlMessage).data.content.body;
|
|
const webhookUrl = msgData.split('\n')[2];
|
|
const webhookNotice = user.waitForRoomEvent<MessageEventContent>({
|
|
eventType: 'm.room.message', sender: testEnv.botMxid, roomId: testRoomId, body: 'Hello world!'
|
|
});
|
|
|
|
// Send a webhook
|
|
await fetch(webhookUrl, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({text: 'Hello world!'})
|
|
});
|
|
|
|
// And await the notice.
|
|
await webhookNotice;
|
|
});
|
|
});
|