|
|
@@ -0,0 +1,52 @@
|
|
|
+SandboxedModule = require('sandboxed-module')
|
|
|
+sinon = require('sinon')
|
|
|
+require('chai').should()
|
|
|
+modulePath = require('path').join __dirname, '../../../../app/js/MongoHealthCheck'
|
|
|
+
|
|
|
+describe "MongoHealthCheck", ->
|
|
|
+ beforeEach ->
|
|
|
+ @MongoHealthCheck = SandboxedModule.require modulePath, requires:
|
|
|
+ "settings-sharelatex": @Settings = {}
|
|
|
+ "./PersistenceManager": @PersistenceManager = {}
|
|
|
+ @doc_id = "mock-doc-id"
|
|
|
+ @callback = sinon.stub()
|
|
|
+
|
|
|
+ describe "isAlive", ->
|
|
|
+ describe "with no configured doc_id", ->
|
|
|
+ beforeEach ->
|
|
|
+ @MongoHealthCheck.isAlive @callback
|
|
|
+
|
|
|
+ it "should call the call the callback with an error", ->
|
|
|
+ @callback.calledOnce.should.equal true
|
|
|
+ error = @callback.args[0][0]
|
|
|
+ error.message.should.equal "No test doc_id configured"
|
|
|
+
|
|
|
+ describe "when mongo returns within the timeout", ->
|
|
|
+ beforeEach ->
|
|
|
+ @Settings.smokeTest =
|
|
|
+ doc_id: @doc_id
|
|
|
+ @PersistenceManager.getDocVersionInMongo = sinon.stub().callsArg(1)
|
|
|
+ @MongoHealthCheck.isAlive @callback
|
|
|
+
|
|
|
+ it "should call PersistenceManager.getDocVersionInMongo", ->
|
|
|
+ @PersistenceManager.getDocVersionInMongo
|
|
|
+ .calledWith(@doc_id)
|
|
|
+ .should.equal true
|
|
|
+
|
|
|
+ it "should call the call the callback without an error", ->
|
|
|
+ @callback.calledOnce.should.equal true
|
|
|
+ @callback.calledWith(null).should.equal true
|
|
|
+
|
|
|
+ describe "when mongo does not return within the timeout", ->
|
|
|
+ beforeEach (done) ->
|
|
|
+ @Settings.smokeTest =
|
|
|
+ doc_id: @doc_id
|
|
|
+ timeout: 50
|
|
|
+ @PersistenceManager.getDocVersionInMongo = (doc_id, callback) ->
|
|
|
+ setTimeout callback, 100
|
|
|
+ @MongoHealthCheck.isAlive (@error) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ it "should call the call the callback with an error", ->
|
|
|
+ @error.message.should.equal "Mongo did not return in 50ms"
|
|
|
+
|