@unito/integration-sdk
Version:
Integration SDK
41 lines (29 loc) • 1.61 kB
text/typescript
import express from 'express';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { OperationDeadline } from '../../src/resources/operationDeadline.js';
import extractOperationDeadline from '../../src/middlewares/deadline.js';
describe('signal middleware', () => {
it('uses header', () => {
const deadlineSeconds = Math.floor((Date.now() + 5000) / 1000);
const request = { header: (_key: string) => deadlineSeconds } as unknown as express.Request;
const response = { locals: {} } as express.Response;
extractOperationDeadline(request, response, () => {});
assert.ok(response.locals.deadline instanceof OperationDeadline);
assert.equal(response.locals.deadline.signal.aborted, false);
});
it('attaches the absolute deadline (epoch ms)', () => {
const deadlineSeconds = Math.floor((Date.now() + 5000) / 1000);
const request = { header: (_key: string) => deadlineSeconds } as unknown as express.Request;
const response = { locals: {} } as express.Response;
extractOperationDeadline(request, response, () => {});
assert.equal(response.locals.deadline?.deadlineTimestamp, deadlineSeconds * 1000);
});
it('defaults to never() when no header', () => {
const request = { header: (_key: string) => undefined } as unknown as express.Request;
const response = { locals: {} } as express.Response;
extractOperationDeadline(request, response, () => {});
assert.ok(response.locals.deadline instanceof OperationDeadline);
assert.equal(response.locals.deadline.deadlineTimestamp, Infinity);
});
});