FixturesManager.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /* eslint-disable
  2. camelcase,
  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. * DS207: Consider shorter variations of null checks
  10. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  11. */
  12. let FixturesManager
  13. const RealTimeClient = require('./RealTimeClient')
  14. const MockWebServer = require('./MockWebServer')
  15. const MockDocUpdaterServer = require('./MockDocUpdaterServer')
  16. module.exports = FixturesManager = {
  17. setUpProject(options, callback) {
  18. if (options == null) {
  19. options = {}
  20. }
  21. if (callback == null) {
  22. callback = function () {}
  23. }
  24. if (!options.user_id) {
  25. options.user_id = FixturesManager.getRandomId()
  26. }
  27. if (!options.project_id) {
  28. options.project_id = FixturesManager.getRandomId()
  29. }
  30. if (!options.project) {
  31. options.project = { name: 'Test Project' }
  32. }
  33. const { project_id, user_id, privilegeLevel, project, publicAccess } =
  34. options
  35. const privileges = {}
  36. privileges[user_id] = privilegeLevel
  37. if (publicAccess) {
  38. privileges['anonymous-user'] = publicAccess
  39. }
  40. MockWebServer.createMockProject(project_id, privileges, project)
  41. return MockWebServer.run(error => {
  42. if (error != null) {
  43. throw error
  44. }
  45. return RealTimeClient.setSession(
  46. {
  47. user: {
  48. _id: user_id,
  49. first_name: 'Joe',
  50. last_name: 'Bloggs',
  51. },
  52. },
  53. error => {
  54. if (error != null) {
  55. throw error
  56. }
  57. return callback(null, {
  58. project_id,
  59. user_id,
  60. privilegeLevel,
  61. project,
  62. })
  63. }
  64. )
  65. })
  66. },
  67. setUpDoc(project_id, options, callback) {
  68. if (options == null) {
  69. options = {}
  70. }
  71. if (callback == null) {
  72. callback = function () {}
  73. }
  74. if (!options.doc_id) {
  75. options.doc_id = FixturesManager.getRandomId()
  76. }
  77. if (!options.lines) {
  78. options.lines = ['doc', 'lines']
  79. }
  80. if (!options.version) {
  81. options.version = 42
  82. }
  83. if (!options.ops) {
  84. options.ops = ['mock', 'ops']
  85. }
  86. const { doc_id, lines, version, ops, ranges } = options
  87. MockDocUpdaterServer.createMockDoc(project_id, doc_id, {
  88. lines,
  89. version,
  90. ops,
  91. ranges,
  92. })
  93. return MockDocUpdaterServer.run(error => {
  94. if (error != null) {
  95. throw error
  96. }
  97. return callback(null, { project_id, doc_id, lines, version, ops })
  98. })
  99. },
  100. setUpEditorSession(options, callback) {
  101. FixturesManager.setUpProject(options, (err, detailsProject) => {
  102. if (err) return callback(err)
  103. FixturesManager.setUpDoc(
  104. detailsProject.project_id,
  105. options,
  106. (err, detailsDoc) => {
  107. if (err) return callback(err)
  108. callback(null, Object.assign({}, detailsProject, detailsDoc))
  109. }
  110. )
  111. })
  112. },
  113. getRandomId() {
  114. return require('crypto')
  115. .createHash('sha1')
  116. .update(Math.random().toString())
  117. .digest('hex')
  118. .slice(0, 24)
  119. },
  120. }