Skip to content

Commit

Permalink
fix: respect logLevel and logProvider option for proxy (#3257)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait authored May 6, 2021
1 parent 10e089b commit 199baec
Show file tree
Hide file tree
Showing 2 changed files with 224 additions and 4 deletions.
13 changes: 9 additions & 4 deletions lib/Server.js
Original file line number Diff line number Diff line change
Expand Up @@ -220,10 +220,15 @@ class Server {
const configWithDevServer =
configs.find((config) => config.devServer) || configs[0];

proxyOptions.logLevel = getLogLevelForProxy(
configWithDevServer.infrastructureLogging.level
);
proxyOptions.logProvider = () => this.logger;
if (typeof proxyOptions.logLevel === 'undefined') {
proxyOptions.logLevel = getLogLevelForProxy(
configWithDevServer.infrastructureLogging.level
);
}

if (typeof proxyOptions.logProvider === 'undefined') {
proxyOptions.logProvider = () => this.logger;
}

return proxyOptions;
});
Expand Down
215 changes: 215 additions & 0 deletions test/server/proxy-option.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@ describe('proxy option', () => {
let responseMessage;

const transportModes = ['sockjs', 'ws'];

transportModes.forEach((transportMode) => {
describe(`with transportMode: ${transportMode}`, () => {
beforeAll((done) => {
Expand Down Expand Up @@ -512,4 +513,218 @@ describe('proxy option', () => {
req.get('/proxy1').expect(200, 'from proxy1', done);
});
});

describe('should work and respect `logProvider` and `logLevel` options', () => {
let server;
let req;
let closeProxyServers;
let customLogProvider;

beforeAll((done) => {
customLogProvider = {
log: jest.fn(),
debug: jest.fn(),
info: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
};

closeProxyServers = startProxyServers();
server = testServer.start(
config,
{
static: {
directory: contentBase,
watch: false,
},
proxy: {
'/my-path': {
target: 'http://unknown:1234',
logProvider: () => customLogProvider,
logLevel: 'error',
},
},
port: port3,
},
done
);
req = request(server.app);
});

afterAll((done) => {
testServer.close(() => {
closeProxyServers(done);
});
});

describe('target', () => {
it('respects a proxy option when a request path is matched', (done) => {
req.get('/my-path').expect(504, () => {
expect(customLogProvider.error).toHaveBeenCalledTimes(1);

done();
});
});
});
});

describe('should work and respect the `logLevel` option with `silent` value', () => {
let server;
let req;
let closeProxyServers;
let customLogProvider;

beforeAll((done) => {
customLogProvider = {
log: jest.fn(),
debug: jest.fn(),
info: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
};

closeProxyServers = startProxyServers();
server = testServer.start(
config,
{
static: {
directory: contentBase,
watch: false,
},
proxy: {
'/my-path': {
target: 'http://unknown:1234',
logProvider: () => customLogProvider,
logLevel: 'silent',
},
},
port: port3,
},
done
);
req = request(server.app);
});

afterAll((done) => {
testServer.close(() => {
closeProxyServers(done);
});
});

describe('target', () => {
it('respects a proxy option when a request path is matched', (done) => {
req.get('/my-path').expect(504, () => {
expect(customLogProvider.error).toHaveBeenCalledTimes(0);

done();
});
});
});
});

describe('should work and respect the `infrastructureLogging.level` option', () => {
let server;
let req;
let closeProxyServers;
let customLogProvider;

beforeAll((done) => {
customLogProvider = {
log: jest.fn(),
debug: jest.fn(),
info: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
};

closeProxyServers = startProxyServers();
server = testServer.start(
{ ...config, infrastructureLogging: { level: 'error' } },
{
static: {
directory: contentBase,
watch: false,
},
proxy: {
'/my-path': {
target: 'http://unknown:1234',
logProvider: () => customLogProvider,
},
},
port: port3,
},
done
);
req = request(server.app);
});

afterAll((done) => {
testServer.close(() => {
closeProxyServers(done);
});
});

describe('target', () => {
it('respects a proxy option when a request path is matched', (done) => {
req.get('/my-path').expect(504, () => {
expect(customLogProvider.error).toHaveBeenCalledTimes(1);

done();
});
});
});
});

describe('should work and respect the `infrastructureLogging.level` option with `none` value', () => {
let server;
let req;
let closeProxyServers;
let customLogProvider;

beforeAll((done) => {
customLogProvider = {
log: jest.fn(),
debug: jest.fn(),
info: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
};

closeProxyServers = startProxyServers();
server = testServer.start(
{ ...config, infrastructureLogging: { level: 'none' } },
{
static: {
directory: contentBase,
watch: false,
},
proxy: {
'/my-path': {
target: 'http://unknown:1234',
logProvider: () => customLogProvider,
},
},
port: port3,
},
done
);
req = request(server.app);
});

afterAll((done) => {
testServer.close(() => {
closeProxyServers(done);
});
});

describe('target', () => {
it('respects a proxy option when a request path is matched', (done) => {
req.get('/my-path').expect(504, () => {
expect(customLogProvider.error).toHaveBeenCalledTimes(0);

done();
});
});
});
});
});

0 comments on commit 199baec

Please sign in to comment.