mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Don't read from comment thread if no global message thread exists
This commit is contained in:
parent
cb47ec464e
commit
2f30732011
2 changed files with 77 additions and 50 deletions
|
@ -6,21 +6,33 @@ module.exports = ThreadManager =
|
||||||
GLOBAL_THREAD: "GLOBAL"
|
GLOBAL_THREAD: "GLOBAL"
|
||||||
|
|
||||||
findOrCreateThread: (project_id, thread_id, callback = (error, thread) ->) ->
|
findOrCreateThread: (project_id, thread_id, callback = (error, thread) ->) ->
|
||||||
query =
|
project_id = ObjectId(project_id.toString())
|
||||||
project_id: ObjectId(project_id.toString())
|
if thread_id != ThreadManager.GLOBAL_THREAD
|
||||||
|
thread_id = ObjectId(thread_id.toString())
|
||||||
|
|
||||||
if thread_id? and thread_id != ThreadManager.GLOBAL_THREAD
|
if thread_id == ThreadManager.GLOBAL_THREAD
|
||||||
query.thread_id = ObjectId(thread_id.toString())
|
query = {
|
||||||
|
project_id: project_id
|
||||||
# Threads used to be called rooms, and still are in the DB
|
thread_id: { $exists: false }
|
||||||
db.rooms.findOne query, (error, thread) ->
|
}
|
||||||
|
update = {
|
||||||
|
project_id: project_id
|
||||||
|
}
|
||||||
|
else
|
||||||
|
query = {
|
||||||
|
project_id: project_id
|
||||||
|
thread_id: thread_id
|
||||||
|
}
|
||||||
|
update = {
|
||||||
|
project_id: project_id
|
||||||
|
thread_id: thread_id
|
||||||
|
}
|
||||||
|
|
||||||
|
db.rooms.update query, update, { upsert: true }, (error) ->
|
||||||
return callback(error) if error?
|
return callback(error) if error?
|
||||||
if thread?
|
db.rooms.find query, (error, rooms = []) ->
|
||||||
callback null, thread
|
return callback(error) if error?
|
||||||
else
|
return callback null, rooms[0]
|
||||||
db.rooms.save query, (error, thread) ->
|
|
||||||
return callback(error) if error?
|
|
||||||
callback null, thread
|
|
||||||
|
|
||||||
findAllThreadRooms: (project_id, callback = (error, rooms) ->) ->
|
findAllThreadRooms: (project_id, callback = (error, rooms) ->) ->
|
||||||
db.rooms.find {
|
db.rooms.find {
|
||||||
|
|
|
@ -5,12 +5,11 @@ ChatClient = require "./helpers/ChatClient"
|
||||||
|
|
||||||
describe "Sending a message", ->
|
describe "Sending a message", ->
|
||||||
before ->
|
before ->
|
||||||
@project_id = ObjectId().toString()
|
|
||||||
@user_id = ObjectId().toString()
|
|
||||||
@thread_id = ObjectId().toString()
|
|
||||||
|
|
||||||
describe "globally", ->
|
describe "globally", ->
|
||||||
before (done) ->
|
before (done) ->
|
||||||
|
@project_id = ObjectId().toString()
|
||||||
|
@user_id = ObjectId().toString()
|
||||||
@content = "global message"
|
@content = "global message"
|
||||||
ChatClient.sendGlobalMessage @project_id, @user_id, @content, (error, response, body) =>
|
ChatClient.sendGlobalMessage @project_id, @user_id, @content, (error, response, body) =>
|
||||||
expect(error).to.be.null
|
expect(error).to.be.null
|
||||||
|
@ -30,6 +29,9 @@ describe "Sending a message", ->
|
||||||
|
|
||||||
describe "to a thread", ->
|
describe "to a thread", ->
|
||||||
before (done) ->
|
before (done) ->
|
||||||
|
@project_id = ObjectId().toString()
|
||||||
|
@user_id = ObjectId().toString()
|
||||||
|
@thread_id = ObjectId().toString()
|
||||||
@content = "thread message"
|
@content = "thread message"
|
||||||
ChatClient.sendMessage @project_id, @thread_id, @user_id, @content, (error, response, body) =>
|
ChatClient.sendMessage @project_id, @thread_id, @user_id, @content, (error, response, body) =>
|
||||||
expect(error).to.be.null
|
expect(error).to.be.null
|
||||||
|
@ -46,39 +48,52 @@ describe "Sending a message", ->
|
||||||
expect(threads[@thread_id].messages.length).to.equal 1
|
expect(threads[@thread_id].messages.length).to.equal 1
|
||||||
expect(threads[@thread_id].messages[0].content).to.equal @content
|
expect(threads[@thread_id].messages[0].content).to.equal @content
|
||||||
done()
|
done()
|
||||||
|
|
||||||
describe "with a malformed user_id", ->
|
it "should not appear in the global messages", (done) ->
|
||||||
it "should return a graceful error", (done) ->
|
ChatClient.getGlobalMessages @project_id, (error, response, messages) =>
|
||||||
ChatClient.sendMessage @project_id, @thread_id, "malformed-user", "content", (error, response, body) =>
|
expect(error).to.be.null
|
||||||
expect(response.statusCode).to.equal 400
|
expect(response.statusCode).to.equal 200
|
||||||
expect(body).to.equal "Invalid user_id"
|
expect(messages.length).to.equal 0
|
||||||
done()
|
done()
|
||||||
|
|
||||||
describe "with a malformed project_id", ->
|
describe "failure cases", ->
|
||||||
it "should return a graceful error", (done) ->
|
before () ->
|
||||||
ChatClient.sendMessage "malformed-project", @thread_id, @user_id, "content", (error, response, body) =>
|
@project_id = ObjectId().toString()
|
||||||
expect(response.statusCode).to.equal 400
|
@user_id = ObjectId().toString()
|
||||||
expect(body).to.equal "Invalid project_id"
|
@thread_id = ObjectId().toString()
|
||||||
done()
|
|
||||||
|
describe "with a malformed user_id", ->
|
||||||
describe "with a malformed thread_id", ->
|
it "should return a graceful error", (done) ->
|
||||||
it "should return a graceful error", (done) ->
|
ChatClient.sendMessage @project_id, @thread_id, "malformed-user", "content", (error, response, body) =>
|
||||||
ChatClient.sendMessage @project_id, "malformed-thread-id", @user_id, "content", (error, response, body) =>
|
expect(response.statusCode).to.equal 400
|
||||||
expect(response.statusCode).to.equal 400
|
expect(body).to.equal "Invalid user_id"
|
||||||
expect(body).to.equal "Invalid thread_id"
|
done()
|
||||||
done()
|
|
||||||
|
describe "with a malformed project_id", ->
|
||||||
describe "with no content", ->
|
it "should return a graceful error", (done) ->
|
||||||
it "should return a graceful error", (done) ->
|
ChatClient.sendMessage "malformed-project", @thread_id, @user_id, "content", (error, response, body) =>
|
||||||
ChatClient.sendMessage @project_id, @thread_id, @user_id, null, (error, response, body) =>
|
expect(response.statusCode).to.equal 400
|
||||||
expect(response.statusCode).to.equal 400
|
expect(body).to.equal "Invalid project_id"
|
||||||
expect(body).to.equal "No content provided"
|
done()
|
||||||
done()
|
|
||||||
|
describe "with a malformed thread_id", ->
|
||||||
describe "with very long content", ->
|
it "should return a graceful error", (done) ->
|
||||||
it "should return a graceful error", (done) ->
|
ChatClient.sendMessage @project_id, "malformed-thread-id", @user_id, "content", (error, response, body) =>
|
||||||
content = new Buffer(10240).toString("hex")
|
expect(response.statusCode).to.equal 400
|
||||||
ChatClient.sendMessage @project_id, @thread_id, @user_id, content, (error, response, body) =>
|
expect(body).to.equal "Invalid thread_id"
|
||||||
expect(response.statusCode).to.equal 400
|
done()
|
||||||
expect(body).to.equal "Content too long (> 10240 bytes)"
|
|
||||||
done()
|
describe "with no content", ->
|
||||||
|
it "should return a graceful error", (done) ->
|
||||||
|
ChatClient.sendMessage @project_id, @thread_id, @user_id, null, (error, response, body) =>
|
||||||
|
expect(response.statusCode).to.equal 400
|
||||||
|
expect(body).to.equal "No content provided"
|
||||||
|
done()
|
||||||
|
|
||||||
|
describe "with very long content", ->
|
||||||
|
it "should return a graceful error", (done) ->
|
||||||
|
content = new Buffer(10240).toString("hex")
|
||||||
|
ChatClient.sendMessage @project_id, @thread_id, @user_id, content, (error, response, body) =>
|
||||||
|
expect(response.statusCode).to.equal 400
|
||||||
|
expect(body).to.equal "Content too long (> 10240 bytes)"
|
||||||
|
done()
|
Loading…
Reference in a new issue