mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	maintenance tests
This commit is contained in:
		| @@ -27,20 +27,6 @@ module.exports = function (middleware) { | |||||||
| 			'^/language/.+', | 			'^/language/.+', | ||||||
| 			'^/uploads/system/site-logo.png' | 			'^/uploads/system/site-logo.png' | ||||||
| 		]; | 		]; | ||||||
| 		var render = function () { |  | ||||||
| 			res.status(503); |  | ||||||
| 			var data = { |  | ||||||
| 				site_title: meta.config.title || 'NodeBB', |  | ||||||
| 				message: meta.config.maintenanceModeMessage |  | ||||||
| 			}; |  | ||||||
| 			if (!isApiRoute.test(url)) { |  | ||||||
| 				middleware.buildHeader(req, res, function () { |  | ||||||
| 					res.render('503', data); |  | ||||||
| 				}); |  | ||||||
| 			} else { |  | ||||||
| 				res.json(data); |  | ||||||
| 			} |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		var isAllowed = function (url) { | 		var isAllowed = function (url) { | ||||||
| 			for(var x = 0,numAllowed = allowedRoutes.length,route; x < numAllowed; x++) { | 			for(var x = 0,numAllowed = allowedRoutes.length,route; x < numAllowed; x++) { | ||||||
| @@ -52,25 +38,28 @@ module.exports = function (middleware) { | |||||||
| 			return false; | 			return false; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		var isApiRoute = /^\/api/; |  | ||||||
|  |  | ||||||
| 		if (isAllowed(url)) { | 		if (isAllowed(url)) { | ||||||
| 			return next(); | 			return next(); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		if (!req.user) { | 		user.isAdministrator(req.uid, function (err, isAdmin) { | ||||||
| 			return render(); | 			if (err || isAdmin) { | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		user.isAdministrator(req.user.uid, function (err, isAdmin) { |  | ||||||
| 			if (err) { |  | ||||||
| 				return next(err); | 				return next(err); | ||||||
| 			} | 			} | ||||||
| 			if (!isAdmin) { |  | ||||||
| 				render(); | 			res.status(503); | ||||||
| 			} else { | 			var data = { | ||||||
| 				next(); | 				site_title: meta.config.title || 'NodeBB', | ||||||
|  | 				message: meta.config.maintenanceModeMessage | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			if (res.locals.isAPI) { | ||||||
|  | 				return res.json(data); | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | 			middleware.buildHeader(req, res, function () { | ||||||
|  | 				res.render('503', data); | ||||||
|  | 			}); | ||||||
| 		}); | 		}); | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -416,6 +416,17 @@ describe('Admin Controllers', function () { | |||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|  | 	it('should load /recent in maintenance mode', function (done) { | ||||||
|  | 		var meta = require('../src/meta'); | ||||||
|  | 		meta.config.maintenanceMode = 1; | ||||||
|  | 		request(nconf.get('url') + '/api/recent', {jar: jar, json: true}, function (err, res, body) { | ||||||
|  | 			assert.ifError(err); | ||||||
|  | 			assert.equal(res.statusCode, 200); | ||||||
|  | 			assert(body); | ||||||
|  | 			meta.config.maintenanceMode = 0; | ||||||
|  | 			done(); | ||||||
|  | 		}); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	after(function (done) { | 	after(function (done) { | ||||||
|   | |||||||
| @@ -665,6 +665,44 @@ describe('Controllers', function () { | |||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	describe('maintenance mode', function () { | ||||||
|  |  | ||||||
|  | 		before(function (done) { | ||||||
|  | 			meta.config.maintenanceMode = 1; | ||||||
|  | 			done(); | ||||||
|  | 		}); | ||||||
|  | 		after(function (done) { | ||||||
|  | 			meta.config.maintenanceMode = 0; | ||||||
|  | 			done(); | ||||||
|  | 		}); | ||||||
|  |  | ||||||
|  | 		it('should return 503 in maintenance mode', function (done) { | ||||||
|  | 			request(nconf.get('url') + '/recent', {json: true}, function (err, res, body) { | ||||||
|  | 				assert.ifError(err); | ||||||
|  | 				assert.equal(res.statusCode, 503); | ||||||
|  | 				done(); | ||||||
|  | 			}); | ||||||
|  | 		}); | ||||||
|  |  | ||||||
|  | 		it('should return 503 in maintenance mode', function (done) { | ||||||
|  | 			request(nconf.get('url') + '/api/recent', {json: true}, function (err, res, body) { | ||||||
|  | 				assert.ifError(err); | ||||||
|  | 				assert.equal(res.statusCode, 503); | ||||||
|  | 				assert(body); | ||||||
|  | 				done(); | ||||||
|  | 			}); | ||||||
|  | 		}); | ||||||
|  |  | ||||||
|  | 		it('should return 200 in maintenance mode', function (done) { | ||||||
|  | 			request(nconf.get('url') + '/api/login', {json: true}, function (err, res, body) { | ||||||
|  | 				assert.ifError(err); | ||||||
|  | 				assert.equal(res.statusCode, 200); | ||||||
|  | 				assert(body); | ||||||
|  | 				done(); | ||||||
|  | 			}); | ||||||
|  | 		}); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
| 	after(function (done) { | 	after(function (done) { | ||||||
| 		var analytics = require('../src/analytics'); | 		var analytics = require('../src/analytics'); | ||||||
| 		analytics.writeData(function (err) { | 		analytics.writeData(function (err) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user