glitchkit
Version:
A lightweight toolkit to create and manage expressive, structured, and reusable error types. Perfect for APIs, services, and glitchy adventures
148 lines (147 loc) • 10.5 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const GlitchKitBaseError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseError"));
const GlitchKitBaseHttpError_1 = __importDefault(require("../../baseGlitchKit/GlitchKitBaseHttpError"));
const GlitchKitBadGatewayHttpError_1 = __importDefault(require("../GlitchKitBadGatewayHttpError")); // 502
const GlitchKitBadRequestHttpError_1 = __importDefault(require("../GlitchKitBadRequestHttpError")); // 400
const GlitchKitConflictHttpError_1 = __importDefault(require("../GlitchKitConflictHttpError")); // 409
const GlitchKitExpectationFailedHttpError_1 = __importDefault(require("../GlitchKitExpectationFailedHttpError")); // 417
const GlitchKitFailedDependencyHttpError_1 = __importDefault(require("../GlitchKitFailedDependencyHttpError")); // 424
const GlitchKitForbiddenHttpError_1 = __importDefault(require("../GlitchKitForbiddenHttpError")); // 403
const GlitchKitGatewayTimeoutHttpError_1 = __importDefault(require("../GlitchKitGatewayTimeoutHttpError")); // 504
const GlitchKitGoneHttpError_1 = __importDefault(require("../GlitchKitGoneHttpError")); // 410
const GlitchKitHttpVersionNotSupportedHttpError_1 = __importDefault(require("../GlitchKitHttpVersionNotSupportedHttpError")); // 505
const GlitchKitImATeapotHttpError_1 = __importDefault(require("../GlitchKitImATeapotHttpError")); // 418
const GlitchKitInsufficientStorageHttpError_1 = __importDefault(require("../GlitchKitInsufficientStorageHttpError")); // 507
const GlitchKitInternalServerErrorHttpError_1 = __importDefault(require("../GlitchKitInternalServerErrorHttpError")); // 500
const GlitchKitInternalServerHttpError_1 = __importDefault(require("../GlitchKitInternalServerHttpError")); // 500
const GlitchKitLengthRequiredHttpError_1 = __importDefault(require("../GlitchKitLengthRequiredHttpError")); // 411
const GlitchKitLockedHttpError_1 = __importDefault(require("../GlitchKitLockedHttpError")); // 423
const GlitchKitLoopDetectedHttpError_1 = __importDefault(require("../GlitchKitLoopDetectedHttpError")); // 508
const GlitchKitMethodNotAllowedHttpError_1 = __importDefault(require("../GlitchKitMethodNotAllowedHttpError")); // 405
const GlitchKitMisdirectedRequestHttpError_1 = __importDefault(require("../GlitchKitMisdirectedRequestHttpError")); // 421
const GlitchKitNetworkAuthenticationRequiredHttpError_1 = __importDefault(require("../GlitchKitNetworkAuthenticationRequiredHttpError")); // 511
const GlitchKitNotAcceptableHttpError_1 = __importDefault(require("../GlitchKitNotAcceptableHttpError")); // 406
const GlitchKitNotExtendedHttpError_1 = __importDefault(require("../GlitchKitNotExtendedHttpError")); // 510
const GlitchKitNotFoundHttpError_1 = __importDefault(require("../GlitchKitNotFoundHttpError")); // 404
const GlitchKitNotImplementedHttpError_1 = __importDefault(require("../GlitchKitNotImplementedHttpError")); // 501
const GlitchKitPayloadTooLargeHttpError_1 = __importDefault(require("../GlitchKitPayloadTooLargeHttpError")); // 413
const GlitchKitPaymentRequiredHttpError_1 = __importDefault(require("../GlitchKitPaymentRequiredHttpError")); // 402
const GlitchKitPreconditionFailedHttpError_1 = __importDefault(require("../GlitchKitPreconditionFailedHttpError")); // 412
const GlitchKitPreconditionRequiredHttpError_1 = __importDefault(require("../GlitchKitPreconditionRequiredHttpError")); // 428
const GlitchKitProxyAuthenticationRequiredHttpError_1 = __importDefault(require("../GlitchKitProxyAuthenticationRequiredHttpError")); // 407
const GlitchKitRangeNotSatisfiableHttpError_1 = __importDefault(require("../GlitchKitRangeNotSatisfiableHttpError")); // 416
const GlitchKitRequestHeaderFieldsTooLargeHttpError_1 = __importDefault(require("../GlitchKitRequestHeaderFieldsTooLargeHttpError")); // 431
const GlitchKitRequestTimeoutHttpError_1 = __importDefault(require("../GlitchKitRequestTimeoutHttpError")); // 408
const GlitchKitServiceUnavailableHttpError_1 = __importDefault(require("../GlitchKitServiceUnavailableHttpError")); // 503
const GlitchKitTooEarlyHttpError_1 = __importDefault(require("../GlitchKitTooEarlyHttpError")); // 425
const GlitchKitTooManyRequestsHttpError_1 = __importDefault(require("../GlitchKitTooManyRequestsHttpError")); // 429
const GlitchKitUnauthorizedHttpError_1 = __importDefault(require("../GlitchKitUnauthorizedHttpError")); // 401
const GlitchKitUnavailableForLegalReasonsHttpError_1 = __importDefault(require("../GlitchKitUnavailableForLegalReasonsHttpError")); // 451
const GlitchKitUnprocessableEntityHttpError_1 = __importDefault(require("../GlitchKitUnprocessableEntityHttpError")); // 422
const GlitchKitUnsupportedMediaTypeHttpError_1 = __importDefault(require("../GlitchKitUnsupportedMediaTypeHttpError")); // 415
const GlitchKitUpgradeRequiredHttpError_1 = __importDefault(require("../GlitchKitUpgradeRequiredHttpError")); // 426
const GlitchKitUriTooLongHttpError_1 = __importDefault(require("../GlitchKitUriTooLongHttpError")); // 414
const GlitchKitVariantAlsoNegotiatesHttpError_1 = __importDefault(require("../GlitchKitVariantAlsoNegotiatesHttpError")); // 506
describe('HttpError Generics', () => {
const ErrorClasses = [
GlitchKitBadRequestHttpError_1.default,
GlitchKitConflictHttpError_1.default,
GlitchKitExpectationFailedHttpError_1.default,
GlitchKitFailedDependencyHttpError_1.default,
GlitchKitForbiddenHttpError_1.default,
GlitchKitGoneHttpError_1.default,
GlitchKitImATeapotHttpError_1.default,
GlitchKitLengthRequiredHttpError_1.default,
GlitchKitLockedHttpError_1.default,
GlitchKitMethodNotAllowedHttpError_1.default,
GlitchKitMisdirectedRequestHttpError_1.default,
GlitchKitNotAcceptableHttpError_1.default,
GlitchKitNotFoundHttpError_1.default,
GlitchKitPayloadTooLargeHttpError_1.default,
GlitchKitPaymentRequiredHttpError_1.default,
GlitchKitPreconditionFailedHttpError_1.default,
GlitchKitPreconditionRequiredHttpError_1.default,
GlitchKitProxyAuthenticationRequiredHttpError_1.default,
GlitchKitRangeNotSatisfiableHttpError_1.default,
GlitchKitRequestHeaderFieldsTooLargeHttpError_1.default,
GlitchKitRequestTimeoutHttpError_1.default,
GlitchKitTooEarlyHttpError_1.default,
GlitchKitTooManyRequestsHttpError_1.default,
GlitchKitUnauthorizedHttpError_1.default,
GlitchKitUnavailableForLegalReasonsHttpError_1.default,
GlitchKitUnprocessableEntityHttpError_1.default,
GlitchKitUnsupportedMediaTypeHttpError_1.default,
GlitchKitUpgradeRequiredHttpError_1.default,
GlitchKitUriTooLongHttpError_1.default,
GlitchKitBadGatewayHttpError_1.default,
GlitchKitGatewayTimeoutHttpError_1.default,
GlitchKitHttpVersionNotSupportedHttpError_1.default,
GlitchKitInsufficientStorageHttpError_1.default,
GlitchKitInternalServerErrorHttpError_1.default,
GlitchKitLoopDetectedHttpError_1.default,
GlitchKitNetworkAuthenticationRequiredHttpError_1.default,
GlitchKitNotExtendedHttpError_1.default,
GlitchKitNotImplementedHttpError_1.default,
GlitchKitServiceUnavailableHttpError_1.default,
GlitchKitVariantAlsoNegotiatesHttpError_1.default,
GlitchKitInternalServerHttpError_1.default,
];
const DUMMY_URL = 'https://example.com';
const DUMMY_REQUEST = { method: 'GET', headers: { 'Content-Type': 'application/json' } };
const DUMMY_RESPONSE = { status: 500, headers: { 'Content-Type': 'application/json' } };
const DUMMY_ERROR_CODE = 1001;
const DUMMY_ERROR_MESSAGE = 'Test Error message';
it('should be instance of correct BaseError', () => {
for (const ErrorClass of ErrorClasses) {
const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE);
expect(errorInstance).toBeInstanceOf(ErrorClass);
expect(ErrorClass.isInstance(errorInstance)).toBe(true);
expect(GlitchKitBaseError_1.default.isInstance(errorInstance)).toBe(true);
expect(GlitchKitBaseHttpError_1.default.isInstance(errorInstance)).toBe(true);
}
});
it('should be instance of correct initialization', () => {
for (const ErrorClass of ErrorClasses) {
const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE);
expect(errorInstance.url).toBeUndefined();
expect(errorInstance.request).toBeUndefined();
expect(errorInstance.response).toBeUndefined();
expect(errorInstance.statusCode).toBeGreaterThanOrEqual(399);
expect(errorInstance.statusCode).toBeLessThanOrEqual(600);
}
});
it('should assign collect attribute values 1', () => {
for (const ErrorClass of ErrorClasses) {
const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE);
errorInstance.withUrl(DUMMY_URL);
expect(errorInstance.url).toBe(DUMMY_URL);
errorInstance.withRequest(DUMMY_REQUEST).withResponse(DUMMY_RESPONSE);
expect(errorInstance.request).toEqual(DUMMY_REQUEST);
expect(errorInstance.response).toEqual(DUMMY_RESPONSE);
errorInstance.withStatusCode(900);
expect(errorInstance.statusCode).toBe(900);
const errorJson = errorInstance.toJSON();
expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE);
}
});
it('should assign collect attribute values 2', () => {
for (const ErrorClass of ErrorClasses) {
const errorInstance = new ErrorClass(DUMMY_ERROR_MESSAGE, DUMMY_ERROR_CODE);
errorInstance.url = DUMMY_URL;
expect(errorInstance.url).toBe(DUMMY_URL);
errorInstance.request = DUMMY_REQUEST;
expect(errorInstance.request).toEqual(DUMMY_REQUEST);
errorInstance.response = DUMMY_RESPONSE;
expect(errorInstance.response).toEqual(DUMMY_RESPONSE);
errorInstance.statusCode = 900;
expect(errorInstance.statusCode).toBe(900);
const errorJson = errorInstance.toJSON();
expect(errorJson.message).toBe(DUMMY_ERROR_MESSAGE);
}
});
});
// We recommend installing an extension to run jest tests.