diff --git a/src/routes/test/user-test.js b/src/routes/test/user-test.js index e7aa82de4..5ce5d4dab 100644 --- a/src/routes/test/user-test.js +++ b/src/routes/test/user-test.js @@ -520,6 +520,16 @@ describe('User API', function () { }); }); + it('change user succeeds without email nor displayName', function (done) { + superagent.put(SERVER_URL + '/api/v1/users/' + USERNAME_0) + .query({ access_token: token }) + .send({ password: PASSWORD }) + .end(function (error, result) { + expect(result.statusCode).to.equal(204); + done(); + }); + }); + it('change email succeeds', function (done) { superagent.put(SERVER_URL + '/api/v1/users/' + USERNAME_0) .query({ access_token: token }) @@ -544,7 +554,7 @@ describe('User API', function () { it('change displayName succeeds', function (done) { superagent.put(SERVER_URL + '/api/v1/users/' + USERNAME_0) .query({ access_token: token }) - .send({ password: PASSWORD, email: EMAIL_0_NEW, displayName: DISPLAY_NAME_0_NEW }) + .send({ password: PASSWORD, displayName: DISPLAY_NAME_0_NEW }) .end(function (error, result) { expect(result.statusCode).to.equal(204); diff --git a/src/routes/user.js b/src/routes/user.js index 5729ce856..90302e93a 100644 --- a/src/routes/user.js +++ b/src/routes/user.js @@ -79,12 +79,12 @@ function update(req, res, next) { assert.strictEqual(typeof req.user, 'object'); assert.strictEqual(typeof req.body, 'object'); - if (typeof req.body.email !== 'string') return next(new HttpError(400, 'email must be string')); + if ('email' in req.body && typeof req.body.email !== 'string') return next(new HttpError(400, 'email must be string')); if ('displayName' in req.body && typeof req.body.displayName !== 'string') return next(new HttpError(400, 'displayName must be string')); if (req.user.tokenType !== tokendb.TYPE_USER) return next(new HttpError(403, 'Token type not allowed')); - user.update(req.user.id, req.user.username, req.body.email, req.body.displayName || req.user.displayName, function (error) { + user.update(req.user.id, req.user.username, req.body.email || req.user.email, req.body.displayName || req.user.displayName, function (error) { if (error && error.reason === UserError.BAD_EMAIL) return next(new HttpError(400, error.message)); if (error && error.reason === UserError.NOT_FOUND) return next(new HttpError(404, 'User not found')); if (error) return next(new HttpError(500, error));