RegistrationTests.coffee 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. expect = require("chai").expect
  2. async = require("async")
  3. User = require "./helpers/User"
  4. request = require "./helpers/request"
  5. settings = require "settings-sharelatex"
  6. redis = require "./helpers/redis"
  7. # Expectations
  8. expectProjectAccess = (user, projectId, callback=(err,result)->) ->
  9. # should have access to project
  10. user.openProject projectId, (err) =>
  11. expect(err).to.be.oneOf [null, undefined]
  12. callback()
  13. expectNoProjectAccess = (user, projectId, callback=(err,result)->) ->
  14. # should not have access to project page
  15. user.openProject projectId, (err) =>
  16. expect(err).to.be.instanceof Error
  17. callback()
  18. # Actions
  19. tryLoginThroughRegistrationForm = (user, email, password, callback=(err, response, body)->) ->
  20. user.getCsrfToken (err) ->
  21. return callback(err) if err?
  22. user.request.post {
  23. url: "/register"
  24. json:
  25. email: email
  26. password: password
  27. }, callback
  28. describe "LoginViaRegistration", ->
  29. before (done) ->
  30. @timeout(60000)
  31. @user1 = new User()
  32. @user2 = new User()
  33. async.series [
  34. (cb) => @user1.login cb
  35. (cb) => @user1.logout cb
  36. (cb) => redis.clearUserSessions @user1, cb
  37. (cb) => @user2.login cb
  38. (cb) => @user2.logout cb
  39. (cb) => redis.clearUserSessions @user2, cb
  40. ], done
  41. @project_id = null
  42. describe "[Security] Trying to register/login as another user", ->
  43. it 'should have user1 login', (done) ->
  44. @user1.login (err) ->
  45. expect(err?).to.equal false
  46. done()
  47. it 'should have user1 create a project', (done) ->
  48. @user1.createProject 'Private Project', (err, project_id) =>
  49. expect(err?).to.equal false
  50. @project_id = project_id
  51. done()
  52. it 'should ensure user1 can access their project', (done) ->
  53. expectProjectAccess @user1, @project_id, done
  54. it 'should ensure user2 cannot access the project', (done) ->
  55. expectNoProjectAccess @user2, @project_id, done
  56. it 'should prevent user2 from login/register with user1 email address', (done) ->
  57. tryLoginThroughRegistrationForm @user2, @user1.email, 'totally_not_the_right_password', (err, response, body) =>
  58. expect(body.redir?).to.equal false
  59. expect(body.message?).to.equal true
  60. expect(body.message).to.have.all.keys('type', 'text')
  61. expect(body.message.type).to.equal 'error'
  62. done()
  63. it 'should still ensure user2 cannot access the project', (done) ->
  64. expectNoProjectAccess @user2, @project_id, done