mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-11 08:56:29 +00:00
handle OL or SL ids in UserInfoController.getPersonalInfo
This commit is contained in:
parent
2c0e9bb89a
commit
4adf88ca01
2 changed files with 59 additions and 14 deletions
services/web
app/coffee/Features/User
test/UnitTests/coffee/User
|
@ -4,6 +4,7 @@ UserDeleter = require("./UserDeleter")
|
|||
UserUpdater = require("./UserUpdater")
|
||||
sanitize = require('sanitizer')
|
||||
AuthenticationController = require('../Authentication/AuthenticationController')
|
||||
ObjectId = require("mongojs").ObjectId
|
||||
|
||||
module.exports = UserController =
|
||||
getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) ->
|
||||
|
@ -19,8 +20,17 @@ module.exports = UserController =
|
|||
UserController.sendFormattedPersonalInfo(user, res, next)
|
||||
|
||||
getPersonalInfo: (req, res, next = (error) ->) ->
|
||||
UserGetter.getUser req.params.user_id, { _id: true, first_name: true, last_name: true, email: true}, (error, user) ->
|
||||
logger.log user_id: req.params.user_id, "reciving request for getting users personal info"
|
||||
{user_id} = req.params
|
||||
|
||||
if user_id.match(/^\d+$/)
|
||||
query = { "overleaf.id": parseInt(user_id, 10) }
|
||||
else if user_id.match(/^[a-f0-9]{24}$/)
|
||||
query = { _id: ObjectId(user_id) }
|
||||
else
|
||||
return res.send(400)
|
||||
|
||||
UserGetter.getUser query, { _id: true, first_name: true, last_name: true, email: true}, (error, user) ->
|
||||
logger.log user_id: req.params.user_id, "receiving request for getting users personal info"
|
||||
return next(error) if error?
|
||||
return res.send(404) if !user?
|
||||
UserController.sendFormattedPersonalInfo(user, res, next)
|
||||
|
|
|
@ -12,9 +12,9 @@ ObjectId = require("mongojs").ObjectId
|
|||
|
||||
describe "UserInfoController", ->
|
||||
beforeEach ->
|
||||
@UserDeleter =
|
||||
@UserDeleter =
|
||||
deleteUser: sinon.stub().callsArgWith(1)
|
||||
@UserUpdater =
|
||||
@UserUpdater =
|
||||
updatePersonalInfo: sinon.stub()
|
||||
@sanitizer = escape:(v)->v
|
||||
sinon.spy @sanitizer, "escape"
|
||||
|
@ -50,23 +50,47 @@ describe "UserInfoController", ->
|
|||
.should.equal true
|
||||
|
||||
describe "getPersonalInfo", ->
|
||||
beforeEach ->
|
||||
@user_id = ObjectId().toString()
|
||||
@user =
|
||||
_id: ObjectId(@user_id)
|
||||
@req.params = user_id: @user_id
|
||||
|
||||
describe "when the user exists", ->
|
||||
describe "when the user exists with sharelatex id", ->
|
||||
beforeEach ->
|
||||
@user_id = ObjectId().toString()
|
||||
@user =
|
||||
_id: ObjectId(@user_id)
|
||||
@req.params = user_id: @user_id
|
||||
@UserGetter.getUser = sinon.stub().callsArgWith(2, null, @user)
|
||||
@UserInfoController.sendFormattedPersonalInfo = sinon.stub()
|
||||
@UserInfoController.getPersonalInfo(@req, @res, @next)
|
||||
|
||||
it "should look up the user in the database", ->
|
||||
@UserGetter.getUser
|
||||
.calledWith(@user_id, { _id: true, first_name: true, last_name: true, email: true })
|
||||
.calledWith(
|
||||
{ _id: ObjectId(@user_id) },
|
||||
{ _id: true, first_name: true, last_name: true, email: true }
|
||||
).should.equal true
|
||||
|
||||
it "should send the formatted details back to the client", ->
|
||||
@UserInfoController.sendFormattedPersonalInfo
|
||||
.calledWith(@user, @res, @next)
|
||||
.should.equal true
|
||||
|
||||
|
||||
describe "when the user exists with overleaf id", ->
|
||||
beforeEach ->
|
||||
@user_id = 12345
|
||||
@user =
|
||||
_id: ObjectId()
|
||||
overleaf:
|
||||
id: @user_id
|
||||
@req.params = user_id: @user_id.toString()
|
||||
@UserGetter.getUser = sinon.stub().callsArgWith(2, null, @user)
|
||||
@UserInfoController.sendFormattedPersonalInfo = sinon.stub()
|
||||
@UserInfoController.getPersonalInfo(@req, @res, @next)
|
||||
|
||||
it "should look up the user in the database", ->
|
||||
@UserGetter.getUser
|
||||
.calledWith(
|
||||
{ "overleaf.id": @user_id },
|
||||
{ _id: true, first_name: true, last_name: true, email: true }
|
||||
).should.equal true
|
||||
|
||||
it "should send the formatted details back to the client", ->
|
||||
@UserInfoController.sendFormattedPersonalInfo
|
||||
.calledWith(@user, @res, @next)
|
||||
|
@ -74,13 +98,24 @@ describe "UserInfoController", ->
|
|||
|
||||
describe "when the user does not exist", ->
|
||||
beforeEach ->
|
||||
@user_id = ObjectId().toString()
|
||||
@req.params = user_id: @user_id
|
||||
@UserGetter.getUser = sinon.stub().callsArgWith(2, null, null)
|
||||
@UserInfoController.sendFormattedPersonalInfo = sinon.stub()
|
||||
@UserInfoController.getPersonalInfo(@req, @res, @next)
|
||||
|
||||
it "should return 404 to the client", ->
|
||||
@res.statusCode.should.equal 404
|
||||
|
||||
describe "when the user id is invalid", ->
|
||||
beforeEach ->
|
||||
@user_id = "invalid"
|
||||
@req.params = user_id: @user_id
|
||||
@UserGetter.getUser = sinon.stub().callsArgWith(2, null, null)
|
||||
@UserInfoController.getPersonalInfo(@req, @res, @next)
|
||||
|
||||
it "should return 400 to the client", ->
|
||||
@res.statusCode.should.equal 400
|
||||
|
||||
describe "sendFormattedPersonalInfo", ->
|
||||
beforeEach ->
|
||||
@user =
|
||||
|
|
Loading…
Add table
Reference in a new issue