executor: fix port lookup
Use the global `isFinite` function to find the first valid port number. This is the same behaviour as `_.isFinite` in lodash@2.x. As a result, only values that are a valid number are accepted, e.g. "0" is accepted but "0xy" is not.
This commit is contained in:
parent
e3763ac28e
commit
e5fd8c7975
|
@ -115,9 +115,7 @@ function setPort(app, instructions) {
|
|||
process.env.npm_package_config_port,
|
||||
app.get('port'),
|
||||
3000
|
||||
], function isNumberLike(v) {
|
||||
return Number.isFinite(parseInt(v, 10));
|
||||
});
|
||||
], isFinite);
|
||||
|
||||
if (port !== undefined) {
|
||||
var portType = typeof port;
|
||||
|
|
|
@ -294,6 +294,21 @@ describe('executor', function() {
|
|||
});
|
||||
|
||||
describe('with PaaS and npm env variables', function() {
|
||||
beforeEach(function cleanEnvironment() {
|
||||
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||
delete process.env.npm_config_host;
|
||||
delete process.env.OPENSHIFT_SLS_IP;
|
||||
delete process.env.OPENSHIFT_NODEJS_IP;
|
||||
delete process.env.HOST;
|
||||
delete process.env.npm_package_config_host;
|
||||
|
||||
delete process.env.npm_config_port;
|
||||
delete process.env.OPENSHIFT_SLS_PORT;
|
||||
delete process.env.OPENSHIFT_NODEJS_PORT;
|
||||
delete process.env.PORT;
|
||||
delete process.env.npm_package_config_port;
|
||||
});
|
||||
|
||||
function bootWithDefaults() {
|
||||
app = loopback();
|
||||
boot.execute(app, someInstructions({
|
||||
|
@ -322,7 +337,7 @@ describe('executor', function() {
|
|||
assertHonored('PORT', 'HOST');
|
||||
});
|
||||
|
||||
it('should prioritize sources', function() {
|
||||
it('should prioritize host sources', function() {
|
||||
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
||||
process.env.npm_config_host = randomHost();
|
||||
process.env.OPENSHIFT_SLS_IP = randomHost();
|
||||
|
@ -332,13 +347,9 @@ describe('executor', function() {
|
|||
|
||||
bootWithDefaults();
|
||||
assert.equal(app.get('host'), process.env.npm_config_host);
|
||||
});
|
||||
|
||||
delete process.env.npm_config_host;
|
||||
delete process.env.OPENSHIFT_SLS_IP;
|
||||
delete process.env.OPENSHIFT_NODEJS_IP;
|
||||
delete process.env.HOST;
|
||||
delete process.env.npm_package_config_host;
|
||||
|
||||
it('should prioritize port sources', function() {
|
||||
process.env.npm_config_port = randomPort();
|
||||
process.env.OPENSHIFT_SLS_PORT = randomPort();
|
||||
process.env.OPENSHIFT_NODEJS_PORT = randomPort();
|
||||
|
@ -346,14 +357,7 @@ describe('executor', function() {
|
|||
process.env.npm_package_config_port = randomPort();
|
||||
|
||||
bootWithDefaults();
|
||||
assert.equal(app.get('host'), process.env.npm_config_host);
|
||||
assert.equal(app.get('port'), process.env.npm_config_port);
|
||||
|
||||
delete process.env.npm_config_port;
|
||||
delete process.env.OPENSHIFT_SLS_PORT;
|
||||
delete process.env.OPENSHIFT_NODEJS_PORT;
|
||||
delete process.env.PORT;
|
||||
delete process.env.npm_package_config_port;
|
||||
});
|
||||
|
||||
function randomHost() {
|
||||
|
@ -373,6 +377,12 @@ describe('executor', function() {
|
|||
boot.execute(app, someInstructions({ config: { port: undefined } }));
|
||||
assert.equal(app.get('port'), 3000);
|
||||
});
|
||||
|
||||
it('should ignore non-numeric port values in ENV', function() {
|
||||
process.env.PORT = '123invalid';
|
||||
boot.execute(app, someInstructions({ config: { port: 3000 } }));
|
||||
assert.equal(app.get('port'), 3000);
|
||||
});
|
||||
});
|
||||
|
||||
it('calls function exported by boot/init.js', function() {
|
||||
|
|
Loading…
Reference in New Issue