diff --git a/src/routes/apps.js b/src/routes/apps.js index 632e2dc54..e6856c386 100644 --- a/src/routes/apps.js +++ b/src/routes/apps.js @@ -139,17 +139,17 @@ function configureApp(req, res, next) { if (typeof data.location !== 'string') return next(new HttpError(400, 'location is required')); if (('portBindings' in data) && typeof data.portBindings !== 'object') return next(new HttpError(400, 'portBindings must be an object')); - if (typeof data.accessRestriction !== 'object') return next(new HttpError(400, 'accessRestriction is required')); - if (data.cert && typeof data.cert !== 'string') return next(new HttpError(400, 'cert must be a string')); - if (data.key && typeof data.key !== 'string') return next(new HttpError(400, 'key must be a string')); + if ('accessRestriction' in data && typeof data.accessRestriction !== 'object') return next(new HttpError(400, 'accessRestriction must be an object')); + if ('cert' in data && typeof data.cert !== 'string') return next(new HttpError(400, 'cert must be a string')); + if ('key' in data && typeof data.key !== 'string') return next(new HttpError(400, 'key must be a string')); if (data.cert && !data.key) return next(new HttpError(400, 'key must be provided')); if (!data.cert && data.key) return next(new HttpError(400, 'cert must be provided')); if ('memoryLimit' in data && typeof data.memoryLimit !== 'number') return next(new HttpError(400, 'memoryLimit is not a number')); - if (data.altDomain && typeof data.altDomain !== 'string') return next(new HttpError(400, 'altDomain must be a string')); + if ('altDomain' in data && typeof data.altDomain !== 'string') return next(new HttpError(400, 'altDomain must be a string')); debug('Configuring app id:%s location:%s bindings:%j accessRestriction:%j memoryLimit:%s', req.params.id, data.location, data.portBindings, data.accessRestriction, data.memoryLimit); - apps.configure(req.params.id, data.location, data.portBindings || null, data.accessRestriction, data.cert || null, data.key || null, data.memoryLimit || 0, data.altDomain || null, auditSource(req), function (error) { + apps.configure(req.params.id, data.location, data.portBindings || null, data.accessRestriction || null, data.cert || null, data.key || null, data.memoryLimit || 0, data.altDomain || null, auditSource(req), function (error) { if (error && error.reason === AppsError.ALREADY_EXISTS) return next(new HttpError(409, error.message)); if (error && error.reason === AppsError.PORT_RESERVED) return next(new HttpError(409, 'Port ' + error.message + ' is reserved.')); if (error && error.reason === AppsError.PORT_CONFLICT) return next(new HttpError(409, 'Port ' + error.message + ' is already in use.')); diff --git a/src/routes/test/apps-test.js b/src/routes/test/apps-test.js index 0fd43df31..91c948b30 100644 --- a/src/routes/test/apps-test.js +++ b/src/routes/test/apps-test.js @@ -1228,16 +1228,6 @@ describe('Apps', function () { }); }); - it('cannot reconfigure app with missing accessRestriction', function (done) { - superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') - .query({ access_token: token }) - .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 } }) - .end(function (err, res) { - expect(res.statusCode).to.equal(400); - done(); - }); - }); - it('cannot reconfigure app with only the cert, no key', function (done) { superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') .query({ access_token: token }) @@ -1251,7 +1241,7 @@ describe('Apps', function () { it('cannot reconfigure app with only the key, no cert', function (done) { superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') .query({ access_token: token }) - .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, accessRestriction: null, key: validKey1 }) + .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, key: validKey1 }) .end(function (err, res) { expect(res.statusCode).to.equal(400); done(); @@ -1268,10 +1258,10 @@ describe('Apps', function () { }); }); - it('cannot reconfigure app with key not bein a string', function (done) { + it('cannot reconfigure app with key not being a string', function (done) { superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') .query({ access_token: token }) - .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, accessRestriction: null, cert: validCert1, key: 1234 }) + .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, cert: validCert1, key: 1234 }) .end(function (err, res) { expect(res.statusCode).to.equal(400); done(); @@ -1291,7 +1281,7 @@ describe('Apps', function () { it('can reconfigure app', function (done) { superagent.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') .query({ access_token: token }) - .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, accessRestriction: null }) + .send({ password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 } }) .end(function (err, res) { expect(res.statusCode).to.equal(202); checkConfigureStatus(0, done);