import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import * as errors from '../src/errors.js';
import * as httpErrors from '../src/httpErrors.js';

describe('handleErrorResponse', () => {
  it('returns correct httpError given status code', () => {
    assert.ok(errors.buildHttpError(401, 'unauthorized') instanceof httpErrors.UnauthorizedError);
    assert.ok(errors.buildHttpError(403, 'forbidden') instanceof httpErrors.ForbiddenError);
    assert.ok(errors.buildHttpError(404, 'not found') instanceof httpErrors.NotFoundError);
    assert.ok(errors.buildHttpError(408, 'timeout') instanceof httpErrors.TimeoutError);
    assert.ok(errors.buildHttpError(410, 'resource gone') instanceof httpErrors.ResourceGoneError);
    assert.ok(errors.buildHttpError(422, 'unprocessable entity') instanceof httpErrors.UnprocessableEntityError);
    assert.ok(errors.buildHttpError(423, 'resource gone') instanceof httpErrors.ProviderInstanceLockedError);
    assert.ok(errors.buildHttpError(429, 'rate limit exceeded') instanceof httpErrors.RateLimitExceededError);
    assert.ok(errors.buildHttpError(500, 'internal server error') instanceof httpErrors.HttpError);
  });
});
