JoinProjectTests.coffee 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. chai = require("chai")
  2. expect = chai.expect
  3. chai.should()
  4. RealTimeClient = require "./helpers/RealTimeClient"
  5. MockWebServer = require "./helpers/MockWebServer"
  6. FixturesManager = require "./helpers/FixturesManager"
  7. async = require "async"
  8. describe "joinProject", ->
  9. describe "when authorized", ->
  10. before (done) ->
  11. async.series [
  12. (cb) =>
  13. FixturesManager.setUpProject {
  14. privilegeLevel: "owner"
  15. project: {
  16. name: "Test Project"
  17. }
  18. }, (e, {@project_id, @user_id}) =>
  19. cb(e)
  20. (cb) =>
  21. @client = RealTimeClient.connect()
  22. @client.on "connectionAccepted", cb
  23. (cb) =>
  24. @client.emit "joinProject", project_id: @project_id, (error, @project, @privilegeLevel, @protocolVersion) =>
  25. cb(error)
  26. ], done
  27. it "should get the project from web", ->
  28. MockWebServer.joinProject
  29. .calledWith(@project_id, @user_id)
  30. .should.equal true
  31. it "should return the project", ->
  32. @project.should.deep.equal {
  33. name: "Test Project"
  34. }
  35. it "should return the privilege level", ->
  36. @privilegeLevel.should.equal "owner"
  37. it "should return the protocolVersion", ->
  38. @protocolVersion.should.equal 2
  39. it "should have joined the project room", (done) ->
  40. RealTimeClient.getConnectedClient @client.socket.sessionid, (error, client) =>
  41. expect(@project_id in client.rooms).to.equal true
  42. done()
  43. it "should have marked the user as connected", (done) ->
  44. @client.emit "clientTracking.getConnectedUsers", (error, users) =>
  45. connected = false
  46. for user in users
  47. if user.client_id == @client.socket.sessionid and user.user_id == @user_id
  48. connected = true
  49. break
  50. expect(connected).to.equal true
  51. done()
  52. describe "when not authorized", ->
  53. before (done) ->
  54. async.series [
  55. (cb) =>
  56. FixturesManager.setUpProject {
  57. privilegeLevel: null
  58. project: {
  59. name: "Test Project"
  60. }
  61. }, (e, {@project_id, @user_id}) =>
  62. cb(e)
  63. (cb) =>
  64. @client = RealTimeClient.connect()
  65. @client.on "connectionAccepted", cb
  66. (cb) =>
  67. @client.emit "joinProject", project_id: @project_id, (@error, @project, @privilegeLevel, @protocolVersion) =>
  68. cb()
  69. ], done
  70. it "should return an error", ->
  71. @error.message.should.equal "not authorized"
  72. it "should not have joined the project room", (done) ->
  73. RealTimeClient.getConnectedClient @client.socket.sessionid, (error, client) =>
  74. expect(@project_id in client.rooms).to.equal false
  75. done()