0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00
verdaccio/packages/proxy/test/proxy.error.___.ts

126 lines
4.9 KiB
TypeScript

// import nock from 'nock';
// import path from 'path';
// import { Config, parseConfigFile } from '@verdaccio/config';
// import { API_ERROR, HEADER_TYPE, HTTP_STATUS, VerdaccioError, errorUtils } from '@verdaccio/core';
// import { ProxyStorage } from '../src';
// const getConf = (name) => path.join(__dirname, '/conf', name);
// const mockDebug = jest.fn();
// const mockInfo = jest.fn();
// const mockHttp = jest.fn();
// const mockError = jest.fn();
// const mockWarn = jest.fn();
// jest.mock('@verdaccio/logger', () => {
// const originalLogger = jest.requireActual('@verdaccio/logger');
// return {
// ...originalLogger,
// logger: {
// child: () => ({
// debug: (arg) => mockDebug(arg),
// info: (arg) => mockInfo(arg),
// http: (arg) => mockHttp(arg),
// error: (arg) => mockError(arg),
// warn: (arg) => mockWarn(arg),
// }),
// },
// };
// });
// const domain = 'https://registry.npmjs.org';
// describe('proxy', () => {
// beforeEach(() => {
// nock.cleanAll();
// });
// const defaultRequestOptions = {
// url: 'https://registry.npmjs.org',
// };
// const proxyPath = getConf('proxy1.yaml');
// const conf = new Config(parseConfigFile(proxyPath));
// describe('error handling', () => {
// test('should be offline uplink', (done) => {
// const tarball = 'https://registry.npmjs.org/jquery/-/jquery-0.0.1.tgz';
// nock(domain).get('/jquery/-/jquery-0.0.1.tgz').times(100).replyWithError('some error');
// const proxy = new ProxyStorage(defaultRequestOptions, conf);
// const stream = proxy.fetchTarball(tarball);
// // to test a uplink is offline we have to be try 3 times
// // the default failed request are set to 2
// process.nextTick(function () {
// stream.on('error', function (err) {
// expect(err).not.toBeNull();
// // expect(err.statusCode).toBe(404);
// expect(proxy.failed_requests).toBe(1);
// const streamSecondTry = proxy.fetchTarball(tarball);
// streamSecondTry.on('error', function (err) {
// expect(err).not.toBeNull();
// /*
// code: 'ENOTFOUND',
// errno: 'ENOTFOUND',
// */
// // expect(err.statusCode).toBe(404);
// expect(proxy.failed_requests).toBe(2);
// const streamThirdTry = proxy.fetchTarball(tarball);
// streamThirdTry.on('error', function (err: VerdaccioError) {
// expect(err).not.toBeNull();
// expect(err.statusCode).toBe(HTTP_STATUS.INTERNAL_ERROR);
// expect(proxy.failed_requests).toBe(2);
// expect(err.message).toMatch(API_ERROR.UPLINK_OFFLINE);
// done();
// });
// });
// });
// });
// });
// test('not found tarball', (done) => {
// nock(domain).get('/jquery/-/jquery-0.0.1.tgz').reply(404);
// const prox1 = new ProxyStorage(defaultRequestOptions, conf);
// const stream = prox1.fetchTarball('https://registry.npmjs.org/jquery/-/jquery-0.0.1.tgz');
// stream.on('error', (response) => {
// expect(response).toEqual(errorUtils.getNotFound(API_ERROR.NOT_FILE_UPLINK));
// done();
// });
// });
// test('fail tarball request', (done) => {
// nock(domain).get('/jquery/-/jquery-0.0.1.tgz').replyWithError('boom file');
// const prox1 = new ProxyStorage(defaultRequestOptions, conf);
// const stream = prox1.fetchTarball('https://registry.npmjs.org/jquery/-/jquery-0.0.1.tgz');
// stream.on('error', (response) => {
// expect(response).toEqual(Error('boom file'));
// done();
// });
// });
// test('bad uplink request', (done) => {
// nock(domain).get('/jquery/-/jquery-0.0.1.tgz').reply(409);
// const prox1 = new ProxyStorage(defaultRequestOptions, conf);
// const stream = prox1.fetchTarball('https://registry.npmjs.org/jquery/-/jquery-0.0.1.tgz');
// stream.on('error', (response) => {
// expect(response).toEqual(errorUtils.getInternalError(`bad uplink status code: 409`));
// done();
// });
// });
// test('content length header mismatch', (done) => {
// nock(domain)
// .get('/jquery/-/jquery-0.0.1.tgz')
// // types does not match here with documentation
// // @ts-expect-error
// .replyWithFile(201, path.join(__dirname, 'partials/jquery-0.0.1.tgz'), {
// [HEADER_TYPE.CONTENT_LENGTH]: 0,
// });
// const prox1 = new ProxyStorage(defaultRequestOptions, conf);
// const stream = prox1.fetchTarball('https://registry.npmjs.org/jquery/-/jquery-0.0.1.tgz');
// stream.on('error', (response) => {
// expect(response).toEqual(errorUtils.getInternalError(API_ERROR.CONTENT_MISMATCH));
// done();
// });
// });
// });
// });