Add tests for Messages

This commit is contained in:
Henrik Hüttemann 2023-08-31 17:43:45 +02:00
parent 787c0c092f
commit d711b81f23
No known key found for this signature in database
GPG Key ID: 9F7BD10E0A8A111E
2 changed files with 88 additions and 2 deletions

View File

@ -0,0 +1,86 @@
process.env.AS_TOKEN = 'ApplicationSecretToken'
process.env.EXCLUDED_USERS = 'excludedUser1,excludedUser2'
import { expect, jest, test } from '@jest/globals'
import axios from 'axios'
import * as storage from '../helpers/storage'
import {
MatrixMessage,
RcMessage,
createMessage,
handle,
mapMessage,
} from './messages'
jest.mock('axios')
const mockedAxios = axios as jest.Mocked<typeof axios>
jest.mock('../helpers/storage')
const mockedStorage = storage as jest.Mocked<typeof storage>
const rcMessage: RcMessage = {
_id: 'testMessage',
rid: 'testRoom',
msg: 'Test',
u: {
_id: 'testUser',
},
ts: {
$date: '1970-01-02T06:51:51.0Z', // UNIX-TS: 111111000
},
}
const matrixMessage: MatrixMessage = {
body: 'Test',
msgtype: 'm.text',
type: 'm.room.message',
}
test('mapping messages', () => {
expect(mapMessage(rcMessage)).toStrictEqual(matrixMessage)
})
test('creating messages', async () => {
mockedAxios.put.mockResolvedValue({ data: { event_id: 'message@matrix' } })
await expect(
createMessage(matrixMessage, 'roomID', 'userID', 42, 'transactionId')
).resolves.toBe('message@matrix')
expect(mockedAxios.put).toHaveBeenCalledWith(
'/_matrix/client/v3/rooms/roomID/send/m.room.message/transactionId?user_id=userID&ts=42',
matrixMessage,
{ headers: { Authorization: 'Bearer ApplicationSecretToken' } }
)
mockedAxios.put.mockClear()
})
test('handling messages', async () => {
mockedAxios.put.mockResolvedValue({ data: { event_id: 'test@matrix' } })
mockedStorage.getRoomId.mockResolvedValue('testMatrixRoom')
mockedStorage.getUserId.mockResolvedValue('testMatrixUser')
mockedStorage.getMessageId.mockResolvedValue('testMatrixMessage')
await expect(handle({ ...rcMessage, tmid: 'threadId' })).resolves.toBe(
undefined
)
expect(mockedAxios.put).toHaveBeenLastCalledWith(
'/_matrix/client/v3/rooms/testMatrixRoom/send/m.room.message/testMessage?user_id=testMatrixUser&ts=111111000',
{
...matrixMessage,
'm.relates_to': {
rel_type: 'm.thread',
event_id: 'testMatrixMessage',
is_falling_back: true,
'm.in_reply_to': {
event_id: 'testMatrixMessage',
},
},
},
{ headers: { Authorization: 'Bearer ApplicationSecretToken' } }
)
expect(mockedStorage.getRoomId).toHaveBeenLastCalledWith('testRoom')
expect(mockedStorage.getUserId).toHaveBeenLastCalledWith('testUser')
expect(mockedStorage.getMessageId).toHaveBeenLastCalledWith('threadId')
mockedAxios.put.mockClear()
})

View File

@ -25,10 +25,10 @@ export type RcMessage = {
username?: string
name?: string
}
md?: any // The message's content in a markdown format.
// md?: any // The message's content in a markdown format.
pinned?: boolean
drid?: string // The direct room id (if belongs to a direct room).
attachments?: any[] // An array of attachment objects, available only when the message has at least one attachment.
// attachments?: any[] // An array of attachment objects, available only when the message has at least one attachment.
reactions?: object // Object containing reaction information associated with the message.
}