MockWebServer.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /* eslint-disable
  2. no-return-assign,
  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 MockWebServer
  13. const sinon = require('sinon')
  14. const express = require('express')
  15. module.exports = MockWebServer = {
  16. projects: {},
  17. privileges: {},
  18. createMockProject(projectId, privileges, project) {
  19. MockWebServer.privileges[projectId] = privileges
  20. return (MockWebServer.projects[projectId] = project)
  21. },
  22. joinProject(projectId, userId, callback) {
  23. if (callback == null) {
  24. callback = function () {}
  25. }
  26. return callback(
  27. null,
  28. MockWebServer.projects[projectId],
  29. MockWebServer.privileges[projectId][userId] ||
  30. MockWebServer.privileges[projectId]['anonymous-user']
  31. )
  32. },
  33. joinProjectRequest(req, res, next) {
  34. const { project_id: projectId } = req.params
  35. const { user_id: userId } = req.query
  36. if (projectId === '404404404404404404404404') {
  37. // not-found
  38. return res.status(404).send()
  39. }
  40. if (projectId === '403403403403403403403403') {
  41. // forbidden
  42. return res.status(403).send()
  43. }
  44. if (projectId === '429429429429429429429429') {
  45. // rate-limited
  46. return res.status(429).send()
  47. } else {
  48. return MockWebServer.joinProject(
  49. projectId,
  50. userId,
  51. (error, project, privilegeLevel) => {
  52. if (error != null) {
  53. return next(error)
  54. }
  55. return res.json({
  56. project,
  57. privilegeLevel,
  58. })
  59. }
  60. )
  61. }
  62. },
  63. running: false,
  64. run(callback) {
  65. if (callback == null) {
  66. callback = function () {}
  67. }
  68. if (MockWebServer.running) {
  69. return callback()
  70. }
  71. const app = express()
  72. app.post('/project/:project_id/join', MockWebServer.joinProjectRequest)
  73. return app
  74. .listen(3000, error => {
  75. MockWebServer.running = true
  76. return callback(error)
  77. })
  78. .on('error', error => {
  79. console.error('error starting MockWebServer:', error.message)
  80. return process.exit(1)
  81. })
  82. },
  83. }
  84. sinon.spy(MockWebServer, 'joinProject')