UNPKG

redis-smq-rest-api

Version:

REST API for RedisSMQ: OpenAPI 3 schema and Swagger UI for managing queues, messages, and consumers.

58 lines 2.77 kB
import { EQueueDeliveryModel, EQueueType } from 'redis-smq'; import supertest from 'supertest'; import { describe, expect, it } from 'vitest'; import { config } from '../../../tests/common/config.js'; import { createConsumerGroup } from '../../../tests/common/create-consumer-group.js'; import { createQueue } from '../../../tests/common/create-queue.js'; import { publishMessage } from '../../../tests/common/publish-message.js'; describe('getQueuePendingMessagesController', () => { it('Point-2-Point: HTTP 200 OK', async () => { const { queue } = await createQueue('my-queue'); const [id1] = await publishMessage(queue); const [id2] = await publishMessage(queue); const request = supertest(`http://127.0.0.1:${config.apiServer?.port}`); const queryParams = { pageSize: 10, page: 1, }; const response1 = await request .get(`/api/v1/namespaces/${queue.ns}/queues/${queue.name}/pending-messages`) .query(queryParams); expect(response1.status).toEqual(200); expect(response1.body?.data?.totalItems).toEqual(2); expect(response1.body?.data?.items.map((i) => i.id).sort()).toEqual([id1, id2].sort()); }); it('PUB/SUB: HTTP 200 OK', async () => { const { queue } = await createQueue('q1', EQueueType.FIFO_QUEUE, EQueueDeliveryModel.PUB_SUB); await createConsumerGroup(queue, 'group1'); await createConsumerGroup(queue, 'group2'); const ids = await publishMessage(queue); const request = supertest(`http://127.0.0.1:${config.apiServer?.port}`); const queryParams1 = { pageSize: 10, page: 1, consumerGroupId: 'group1', }; const response1 = await request .get(`/api/v1/namespaces/${queue.ns}/queues/${queue.name}/pending-messages`) .query(queryParams1); expect(response1.status).toEqual(200); expect(response1.body?.data?.totalItems).toEqual(1); const id1 = response1.body?.data?.items[0].id || ''; expect(ids.includes(id1)).toBe(true); const queryParams2 = { pageSize: 10, page: 1, consumerGroupId: 'group2', }; const response2 = await request .get(`/api/v1/namespaces/${queue.ns}/queues/${queue.name}/pending-messages`) .query(queryParams2); expect(response2.status).toEqual(200); expect(response2.body?.data?.totalItems).toEqual(1); const id2 = response2.body?.data?.items[0].id || ''; expect(ids.includes(id2)).toBe(true); expect([id1, id2].sort()).toEqual(ids.sort()); }); }); //# sourceMappingURL=getQueuePendingMessagesController.test.js.map