LockManagerTests.js 2.0 KB

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