Home route (#7039)

* fix: WIP home fix

* remove console.log

* fix: #6949

on redis run all tests in subfolder /forum
fix URI errors
fix sping/ping
v1.18.x
Barış Soner Uşaklı 6 years ago committed by GitHub
parent cd46febdd0
commit 1f918ca8f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,7 @@ before_script:
- sleep 15 # wait for mongodb to be ready
- "mongo mydb_test --eval 'db.createUser({user:\"travis\", pwd: \"test\", roles: []});'"
- sh -c "if [ '$DB' = 'mongodb' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"mongo\\\",\\\"mongo:host\\\":\\\"127.0.0.1\\\",\\\"mongo:port\\\":27017,\\\"mongo:username\\\":\\\"\\\",\\\"mongo:password\\\":\\\"\\\",\\\"mongo:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":27017,\\\"database\\\":0}\"; fi"
- sh -c "if [ '$DB' = 'redis' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"redis\\\",\\\"redis:host\\\":\\\"127.0.0.1\\\",\\\"redis:port\\\":6379,\\\"redis:password\\\":\\\"\\\",\\\"redis:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":6379,\\\"database\\\":0}\"; fi"
- sh -c "if [ '$DB' = 'redis' ]; then node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567/forum\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"redis\\\",\\\"redis:host\\\":\\\"127.0.0.1\\\",\\\"redis:port\\\":6379,\\\"redis:password\\\":\\\"\\\",\\\"redis:database\\\":0,\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":6379,\\\"database\\\":0}\"; fi"
- sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database nodebb;' -U postgres; psql -c 'create database travis_ci_test;' -U postgres; node app --setup=\"{\\\"url\\\":\\\"http://127.0.0.1:4567\\\",\\\"secret\\\":\\\"abcdef\\\",\\\"database\\\":\\\"postgres\\\",\\\"postgres:host\\\":\\\"127.0.0.1\\\",\\\"postgres:port\\\":5432,\\\"postgres:password\\\":\\\"\\\",\\\"postgres:database\\\":\\\"nodebb\\\",\\\"admin:username\\\":\\\"admin\\\",\\\"admin:email\\\":\\\"test@example.org\\\",\\\"admin:password\\\":\\\"hAN3Eg8W\\\",\\\"admin:password:confirm\\\":\\\"hAN3Eg8W\\\"}\" --ci=\"{\\\"host\\\":\\\"127.0.0.1\\\",\\\"port\\\":5432,\\\"username\\\":\\\"postgres\\\",\\\"database\\\":\\\"travis_ci_test\\\"}\"; fi"
after_success:
- "npm run coveralls"

@ -8,8 +8,9 @@ var plugins = require('../plugins');
exports.handleURIErrors = function (err, req, res, next) {
// Handle cases where malformed URIs are passed in
if (err instanceof URIError) {
var tidMatch = req.path.match(/^\/topic\/(\d+)\//);
var cidMatch = req.path.match(/^\/category\/(\d+)\//);
const cleanPath = req.path.replace(new RegExp('^' + nconf.get('relative_path')), '');
var tidMatch = cleanPath.match(/^\/topic\/(\d+)\//);
var cidMatch = cleanPath.match(/^\/category\/(\d+)\//);
if (tidMatch) {
res.redirect(nconf.get('relative_path') + tidMatch[0]);
@ -49,7 +50,7 @@ exports.handleErrors = function (err, req, res, next) { // eslint-disable-line n
// Display NodeBB error page
var status = parseInt(err.status, 10);
if ((status === 302 || status === 308) && err.path) {
return res.locals.isAPI ? res.set('X-Redirect', err.path).status(200).json(err.path) : res.redirect(err.path);
return res.locals.isAPI ? res.set('X-Redirect', err.path).status(200).json(err.path) : res.redirect(nconf.get('relative_path') + err.path);
}
winston.error(req.path + '\n', err);

@ -1,7 +1,8 @@
'use strict';
var async = require('async');
var db = require('../database');
const async = require('async');
const nconf = require('nconf');
const db = require('../database');
module.exports.ping = function (req, res, next) {
async.waterfall([
@ -9,7 +10,7 @@ module.exports.ping = function (req, res, next) {
db.getObject('config', next);
},
function () {
res.status(200).send(req.path === '/sping' ? 'healthy' : '200');
res.status(200).send(req.path === nconf.get('relative_path') + '/sping' ? 'healthy' : '200');
},
], next);
};

@ -87,18 +87,7 @@ function groupRoutes(app, middleware, controllers) {
}
module.exports = function (app, middleware, callback) {
var routers = [
express.Router(), // plugin router
express.Router(), // main app router
express.Router(), // auth router
];
var pluginRouter = routers[0];
pluginRouter.render = function () {
app.render.apply(app, arguments);
};
var router = routers[1];
var authRouter = routers[2];
const router = express.Router();
var relativePath = nconf.get('relative_path');
var ensureLoggedIn = require('connect-ensure-login');
@ -111,11 +100,25 @@ module.exports = function (app, middleware, callback) {
// handle custom homepage routes
router.use('/', controllers.home.rewrite);
pluginRouter.use('/', controllers.home.rewrite);
// homepage handled by `action:homepage.get:[route]`
setupPageRoute(router, '/', middleware, [], controllers.home.pluginHook);
async.series([
async.apply(plugins.reloadRoutes, router),
async.apply(authRoutes.reloadRoutes, router),
async.apply(addCoreRoutes, app, router, middleware),
async.apply(user.addInterstitials),
function (next) {
winston.info('Routes added');
next();
},
], function (err) {
callback(err);
});
};
function addCoreRoutes(app, router, middleware, callback) {
adminRoutes(router, middleware, controllers);
metaRoutes(router, middleware, controllers);
apiRoutes(router, middleware, controllers);
@ -132,9 +135,8 @@ module.exports = function (app, middleware, callback) {
userRoutes(router, middleware, controllers);
groupRoutes(router, middleware, controllers);
routers.forEach((router) => {
var relativePath = nconf.get('relative_path');
app.use(relativePath || '/', router);
});
if (process.env.NODE_ENV === 'development') {
require('./debug')(app, middleware, controllers);
@ -184,17 +186,5 @@ module.exports = function (app, middleware, callback) {
app.use(controllers['404'].handle404);
app.use(controllers.errors.handleURIErrors);
app.use(controllers.errors.handleErrors);
// Add plugin routes
async.series([
async.apply(plugins.reloadRoutes, pluginRouter),
async.apply(authRoutes.reloadRoutes, authRouter),
async.apply(user.addInterstitials),
function (next) {
winston.info('Routes added');
next();
},
], function (err) {
callback(err);
});
};
setImmediate(callback);
}

@ -2144,7 +2144,7 @@ describe('Controllers', function () {
assert.equal(res.statusCode, 200);
assert(body.title);
assert(body.template);
assert.equal(body.url, '/compose');
assert.equal(body.url, nconf.get('relative_path') + '/compose');
done();
});
});
@ -2165,7 +2165,7 @@ describe('Controllers', function () {
assert.equal(res.statusCode, 200);
assert(body.title);
assert.strictEqual(body.template.name, '');
assert.strictEqual(body.url, '/compose');
assert.strictEqual(body.url, nconf.get('relative_path') + '/compose');
plugins.unregisterHook('myTestPlugin', 'filter:composer.build', hookMethod);
done();

@ -33,6 +33,10 @@ nconf.defaults({
relative_path: '',
});
var urlObject = url.parse(nconf.get('url'));
var relativePath = urlObject.pathname !== '/' ? urlObject.pathname : '';
nconf.set('relative_path', relativePath);
if (!nconf.get('isCluster')) {
nconf.set('isPrimary', 'true');
nconf.set('isCluster', 'true');

@ -95,7 +95,7 @@ describe('Upload Controllers', function () {
assert.equal(res.statusCode, 200);
assert(Array.isArray(body));
assert(body[0].url);
var name = body[0].url.replace(nconf.get('upload_url'), '');
var name = body[0].url.replace(nconf.get('relative_path') + nconf.get('upload_url'), '');
socketUser.deleteUpload({ uid: regularUid }, { uid: regularUid, name: name }, function (err) {
assert.ifError(err);
db.getSortedSetRange('uid:' + regularUid + ':uploads', 0, -1, function (err, uploads) {

Loading…
Cancel
Save