LockManagerTests.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* eslint-disable
  2. no-unused-vars,
  3. */
  4. // TODO: This file was created by bulk-decaffeinate.
  5. // Fix any style issues and re-enable lint.
  6. /*
  7. * decaffeinate suggestions:
  8. * DS102: Remove unnecessary code created because of implicit returns
  9. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  10. */
  11. const sinon = require('sinon')
  12. const { expect } = require('chai')
  13. const Settings = require('@overleaf/settings')
  14. const LockManager = require('../../../app/js/LockManager')
  15. const rclient = require('redis').createClient(Settings.redis.history) // Only works locally for now
  16. const TrackChangesApp = require('./helpers/TrackChangesApp')
  17. describe('Locking document', function () {
  18. before(function (done) {
  19. TrackChangesApp.ensureRunning(done)
  20. return null
  21. })
  22. return describe('when the lock has expired in redis', function () {
  23. before(function (done) {
  24. LockManager.LOCK_TTL = 1 // second
  25. LockManager.runWithLock(
  26. 'doc123',
  27. releaseA => {
  28. // we create a lock A and allow it to expire in redis
  29. return setTimeout(
  30. () =>
  31. // now we create a new lock B and try to release A
  32. LockManager.runWithLock(
  33. 'doc123',
  34. releaseB => {
  35. return releaseA()
  36. }, // try to release lock A to see if it wipes out lock B
  37. () => {}
  38. ),
  39. // we never release lock B so nothing should happen here
  40. 1500
  41. )
  42. }, // enough time to wait until the lock has expired
  43. err => {
  44. // we get here after trying to release lock A
  45. expect(err).to.exist
  46. done()
  47. }
  48. )
  49. return null
  50. })
  51. return it('the new lock should not be removed by the expired locker', function (done) {
  52. LockManager.checkLock('doc123', (err, isFree) => {
  53. if (err) return done(err)
  54. expect(isFree).to.equal(false)
  55. return done()
  56. })
  57. return null
  58. })
  59. })
  60. })