UserGetterTests.coffee 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. should = require('chai').should()
  2. SandboxedModule = require('sandboxed-module')
  3. assert = require('assert')
  4. path = require('path')
  5. sinon = require('sinon')
  6. modulePath = path.join __dirname, "../../../../app/js/Features/User/UserGetter"
  7. expect = require("chai").expect
  8. describe "UserGetter", ->
  9. beforeEach ->
  10. @fakeUser = {_id:"12390i"}
  11. @findOne = sinon.stub().callsArgWith(2, null, @fakeUser)
  12. @Mongo =
  13. db: users: findOne: @findOne
  14. ObjectId: (id) -> return id
  15. @UserGetter = SandboxedModule.require modulePath, requires:
  16. "logger-sharelatex": log:->
  17. "../../infrastructure/mongojs": @Mongo
  18. "metrics-sharelatex": timeAsyncMethod: sinon.stub()
  19. describe "getUser", ->
  20. it "should get user", (done)->
  21. query = _id: 'foo'
  22. projection = email: 1
  23. @UserGetter.getUser query, projection, (error, user) =>
  24. @findOne.called.should.equal true
  25. @findOne.calledWith(query, projection).should.equal true
  26. user.should.deep.equal @fakeUser
  27. done()
  28. it "should not allow email in query", (done)->
  29. @UserGetter.getUser email: 'foo@bar.com', {}, (error, user) =>
  30. error.should.exist
  31. done()
  32. describe "getUserbyMainEmail", ->
  33. it "query user by main email", (done)->
  34. email = 'hello@world.com'
  35. projection = emails: 1
  36. @UserGetter.getUserByMainEmail email, projection, (error, user) =>
  37. @findOne.called.should.equal true
  38. @findOne.calledWith(email: email, projection).should.equal true
  39. done()
  40. it "return user if found", (done)->
  41. email = 'hello@world.com'
  42. @UserGetter.getUserByMainEmail email, (error, user) =>
  43. user.should.deep.equal @fakeUser
  44. done()
  45. it "trim email", (done)->
  46. email = 'hello@world.com'
  47. @UserGetter.getUserByMainEmail " #{email} ", (error, user) =>
  48. @findOne.called.should.equal true
  49. @findOne.calledWith(email: email).should.equal true
  50. done()