import express from 'express';
import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import extractOperationDeadline from '../../src/middlewares/signal.js';

describe('signal middleware', () => {
  it('uses header', () => {
    const deadline = Math.floor((Date.now() + 5000) / 1000);

    const request = { header: (_key: string) => deadline } as unknown as express.Request;
    const response = { locals: {} } as express.Response;

    extractOperationDeadline(request, response, () => {});

    assert.ok(response.locals.signal instanceof AbortSignal);
    assert.equal(response.locals.signal.aborted, false);
  });

  it('defaults', () => {
    const request = { header: (_key: string) => undefined } as unknown as express.Request;
    const response = { locals: {} } as express.Response;

    extractOperationDeadline(request, response, () => {});

    assert.ok(!response.locals.signal);
  });
});
