diff --git a/.woodpecker.yml b/.woodpecker.yml index 9a45e0b..f2c7f5f 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -40,7 +40,7 @@ pipeline: image: *node_image commands: - *create_synapse_access_token - - npm test + - npm test --ci node-compile: image: *node_image diff --git a/src/handlers/rooms.test.ts b/src/handlers/rooms.test.ts index b166001..bf3e80a 100644 --- a/src/handlers/rooms.test.ts +++ b/src/handlers/rooms.test.ts @@ -2,6 +2,7 @@ import { expect, jest, test } from '@jest/globals' import axios from 'axios' import { IdMapping } from '../entity/IdMapping' import * as storage from '../helpers/storage' +import { SessionOptions } from '../helpers/synapse' import { MatrixRoomPresets, MatrixRoomVisibility, @@ -54,7 +55,7 @@ const rcPrivateRoom = { u: roomCreator, } -const sessionOption = { +const sessionOption: SessionOptions = { headers: { Authorization: 'Bearer secretAuthToken' }, testingOption: 'there might be other options', } diff --git a/src/handlers/rooms.ts b/src/handlers/rooms.ts index 3a4b954..0ed2897 100644 --- a/src/handlers/rooms.ts +++ b/src/handlers/rooms.ts @@ -6,6 +6,7 @@ import { getMemberships, } from '../helpers/storage' import { + SessionOptions, axios, formatUserSessionOptions, getUserSessionOptions, @@ -114,7 +115,7 @@ export async function parseMemberships(rcRoom: RcRoom): Promise { export async function getCreatorSessionOptions( creatorId: string -): Promise { +): Promise { if (creatorId) { try { const creatorSessionOptions = await getUserSessionOptions(creatorId) @@ -129,7 +130,7 @@ export async function getCreatorSessionOptions( export async function registerRoom( room: MatrixRoom, - creatorSessionOptions: object + creatorSessionOptions: SessionOptions | object ): Promise { return ( await axios.post( @@ -143,7 +144,7 @@ export async function registerRoom( export async function inviteMember( inviteeId: string, roomId: string, - creatorSessionOptions: object + creatorSessionOptions: SessionOptions | object ): Promise { log.http(`Invite member ${inviteeId}`) await axios.post( diff --git a/src/handlers/roomsWithMockedSynapse.test.ts b/src/handlers/roomsWithMockedSynapse.test.ts index a944f06..5ae7119 100644 --- a/src/handlers/roomsWithMockedSynapse.test.ts +++ b/src/handlers/roomsWithMockedSynapse.test.ts @@ -1,5 +1,5 @@ +import { expect, jest, test } from '@jest/globals' import { getUserSessionOptions } from '../helpers/synapse' -import { jest, expect, test } from '@jest/globals' import { getCreatorSessionOptions } from './rooms' jest.mock('../helpers/synapse') diff --git a/src/helpers/storage.ts b/src/helpers/storage.ts index 3b8c8d3..961de7a 100644 --- a/src/helpers/storage.ts +++ b/src/helpers/storage.ts @@ -10,26 +10,32 @@ const AppDataSource = new DataSource({ logging: false, }) -export async function initStorage() { +export async function initStorage(): Promise { await AppDataSource.initialize() } -export function getMapping(id: string, type: number) { +export function getMapping( + id: string, + type: number +): Promise { return AppDataSource.manager.findOneBy(IdMapping, { rcId: id, type: type, }) } -export async function save(entity: IdMapping | Membership) { +export async function save(entity: IdMapping | Membership): Promise { await AppDataSource.manager.save(entity) } -export async function getAccessToken(id: string) { +export async function getAccessToken(id: string): Promise { return (await getMapping(id, 0))?.accessToken } -export async function createMembership(rcRoomId: string, rcUserId: string) { +export async function createMembership( + rcRoomId: string, + rcUserId: string +): Promise { const membership = new Membership() membership.rcRoomId = rcRoomId membership.rcUserId = rcUserId @@ -37,7 +43,7 @@ export async function createMembership(rcRoomId: string, rcUserId: string) { await save(membership) } -export async function getMemberships(rcRoomId: string) { +export async function getMemberships(rcRoomId: string): Promise { return ( await AppDataSource.manager.find(Membership, { select: { diff --git a/src/helpers/synapse.ts b/src/helpers/synapse.ts index 3ab2990..da85899 100644 --- a/src/helpers/synapse.ts +++ b/src/helpers/synapse.ts @@ -7,6 +7,13 @@ axios.defaults.baseURL = 'http://localhost:8008' axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}` axios.defaults.headers.post['Content-Type'] = 'application/json' +export interface SessionOptions { + headers: { + Authorization: string + } + [others: string]: unknown +} + export { default as axios } from 'axios' export const whoami = () => new Promise((resolve, reject) => { @@ -22,11 +29,13 @@ export const whoami = () => }) }) -export function formatUserSessionOptions(accessToken: string) { +export function formatUserSessionOptions(accessToken: string): SessionOptions { return { headers: { Authorization: `Bearer ${accessToken}` } } } -export async function getUserSessionOptions(id: string) { +export async function getUserSessionOptions( + id: string +): Promise { const accessToken = await getAccessToken(id) if (!accessToken) { throw new Error(`Could not retrieve access token for ID ${id}`)