| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- should = require('chai').should()
- SandboxedModule = require('sandboxed-module')
- assert = require('assert')
- path = require('path')
- sinon = require('sinon')
- modulePath = path.join __dirname, "../../../../app/js/Features/User/UserGetter"
- expect = require("chai").expect
- describe "UserGetter", ->
- beforeEach ->
- @fakeUser = {_id:"12390i"}
- @findOne = sinon.stub().callsArgWith(2, null, @fakeUser)
- @Mongo =
- db: users: findOne: @findOne
- ObjectId: (id) -> return id
- @UserGetter = SandboxedModule.require modulePath, requires:
- "logger-sharelatex": log:->
- "../../infrastructure/mongojs": @Mongo
- "metrics-sharelatex": timeAsyncMethod: sinon.stub()
- describe "getUser", ->
- it "should get user", (done)->
- query = _id: 'foo'
- projection = email: 1
- @UserGetter.getUser query, projection, (error, user) =>
- @findOne.called.should.equal true
- @findOne.calledWith(query, projection).should.equal true
- user.should.deep.equal @fakeUser
- done()
- it "should not allow email in query", (done)->
- @UserGetter.getUser email: 'foo@bar.com', {}, (error, user) =>
- error.should.exist
- done()
- describe "getUserbyMainEmail", ->
- it "query user by main email", (done)->
- email = 'hello@world.com'
- projection = emails: 1
- @UserGetter.getUserByMainEmail email, projection, (error, user) =>
- @findOne.called.should.equal true
- @findOne.calledWith(email: email, projection).should.equal true
- done()
- it "return user if found", (done)->
- email = 'hello@world.com'
- @UserGetter.getUserByMainEmail email, (error, user) =>
- user.should.deep.equal @fakeUser
- done()
- it "trim email", (done)->
- email = 'hello@world.com'
- @UserGetter.getUserByMainEmail " #{email} ", (error, user) =>
- @findOne.called.should.equal true
- @findOne.calledWith(email: email).should.equal true
- done()
|