CloseSiteTests.mjs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* eslint-disable
  2. n/handle-callback-err,
  3. no-return-assign,
  4. no-unused-vars,
  5. */
  6. // TODO: This file was created by bulk-decaffeinate.
  7. // Fix any style issues and re-enable lint.
  8. /*
  9. * decaffeinate suggestions:
  10. * DS102: Remove unnecessary code created because of implicit returns
  11. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  12. */
  13. import Settings from '@overleaf/settings'
  14. import request from './helpers/request.js'
  15. describe('siteIsOpen', function () {
  16. afterEach(function () {
  17. delete Settings.maintenanceMessage
  18. delete Settings.maintenanceMessageHTML
  19. })
  20. describe('when siteIsOpen is default (true)', function () {
  21. it('should get page', function (done) {
  22. return request.get('/login', (error, response, body) => {
  23. response.statusCode.should.equal(200)
  24. return done()
  25. })
  26. })
  27. })
  28. describe('when siteIsOpen is false', function () {
  29. beforeEach(function () {
  30. return (Settings.siteIsOpen = false)
  31. })
  32. afterEach(function () {
  33. return (Settings.siteIsOpen = true)
  34. })
  35. it('should return maintenance page', function (done) {
  36. request.get('/login', (error, response, body) => {
  37. response.statusCode.should.equal(503)
  38. body.should.match(/is currently down for maintenance/)
  39. done()
  40. })
  41. })
  42. it('should return a custom message on maintenance page', function (done) {
  43. const message = `Hello world (${Math.random()})`
  44. Settings.maintenanceMessage = message
  45. request.get('/login', (error, response, body) => {
  46. response.statusCode.should.equal(503)
  47. body.should.contain(message)
  48. done()
  49. })
  50. })
  51. it('should return a custom HTML message on maintenance page', function (done) {
  52. const message = `Hello world (${Math.random()})`
  53. const messageHTML = `<p style="color: ghostwhite">Hello world (${Math.random()})</p>`
  54. Settings.maintenanceMessage = message
  55. Settings.maintenanceMessageHTML = messageHTML
  56. request.get('/login', (error, response, body) => {
  57. response.statusCode.should.equal(503)
  58. body.should.not.contain(message)
  59. body.should.contain(messageHTML)
  60. done()
  61. })
  62. })
  63. it('should return a plain text message for a json request', function (done) {
  64. request.get('/some/route', { json: true }, (error, response, body) => {
  65. response.statusCode.should.equal(503)
  66. body.message.should.match(/maintenance/)
  67. body.message.should.match(/status.example.com/)
  68. done()
  69. })
  70. })
  71. it('should return a custom message for a json request', function (done) {
  72. const message = `Hello world (${Math.random()})`
  73. const messageHTML = `<p style="color: ghostwhite">Hello world (${Math.random()})</p>`
  74. Settings.maintenanceMessage = message
  75. Settings.maintenanceMessageHTML = messageHTML
  76. request.get('/some/route', { json: true }, (error, response, body) => {
  77. response.statusCode.should.equal(503)
  78. body.message.should.equal(message)
  79. done()
  80. })
  81. })
  82. it('should return a 200 on / for load balancer health checks', function (done) {
  83. request.get('/', (error, response, body) => {
  84. response.statusCode.should.equal(200)
  85. done()
  86. })
  87. })
  88. it('should return a 200 on /status for readiness checks', function (done) {
  89. request.get('/status', (error, response, body) => {
  90. response.statusCode.should.equal(200)
  91. done()
  92. })
  93. })
  94. })
  95. })