diff --git a/src/routes/apps.js b/src/routes/apps.js index 39c7a1997..5d70d6aa4 100644 --- a/src/routes/apps.js +++ b/src/routes/apps.js @@ -154,6 +154,8 @@ function configureApp(req, res, next) { 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 (typeof data.oauthProxy !== 'boolean') return next(new HttpError(400, 'oauthProxy must be a boolean')); + 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 (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')); diff --git a/src/routes/test/apps-test.js b/src/routes/test/apps-test.js index 6e00e5b6b..22f4fe0ce 100644 --- a/src/routes/test/apps-test.js +++ b/src/routes/test/apps-test.js @@ -1315,6 +1315,26 @@ describe('App installation - port bindings', function () { }); }); + it('cannot reconfigure app with cert not bein a string', function (done) { + request.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') + .query({ access_token: token }) + .send({ appId: APP_ID, password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, accessRestriction: null, oauthProxy: true, cert: 1234, key: fs.readFileSync(TEST_KEY_FILEPATH) }) + .end(function (err, res) { + expect(res.statusCode).to.equal(400); + done(); + }); + }); + + it('cannot reconfigure app with key not bein a string', function (done) { + request.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') + .query({ access_token: token }) + .send({ appId: APP_ID, password: PASSWORD, location: APP_LOCATION_NEW, portBindings: { ECHO_SERVER_PORT: 7172 }, accessRestriction: null, oauthProxy: true, cert: fs.readFileSync(TEST_CRT_FILEPATH), key: 1234 }) + .end(function (err, res) { + expect(res.statusCode).to.equal(400); + done(); + }); + }); + it('non admin cannot reconfigure app', function (done) { request.post(SERVER_URL + '/api/v1/apps/' + APP_ID + '/configure') .query({ access_token: token_1 })