From 17962426ea994434653f47bf904d5a4ce7824a3f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 23 Jul 2014 12:16:49 +0100 Subject: [PATCH] blog returns 404's if the page does not exist in blog --- .../app/coffee/Features/Blog/BlogController.coffee | 5 ++++- .../coffee/Blog/BlogControllerTests.coffee | 14 +++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/services/web/app/coffee/Features/Blog/BlogController.coffee b/services/web/app/coffee/Features/Blog/BlogController.coffee index d5c5279fd8..f4c0b2b811 100644 --- a/services/web/app/coffee/Features/Blog/BlogController.coffee +++ b/services/web/app/coffee/Features/Blog/BlogController.coffee @@ -2,12 +2,13 @@ request = require("request") settings = require("settings-sharelatex") logger = require("logger-sharelatex") _ = require("underscore") +ErrorController = require "../Errors/ErrorController" extensionsToProxy = [".png", ".xml", ".jpeg", ".json", ".zip", ".eps"] module.exports = BlogController = - getPage: (req, res)-> + getPage: (req, res, next)-> url = req.url?.toLowerCase() blogUrl = "#{settings.apis.blog.url}#{url}" @@ -19,6 +20,8 @@ module.exports = BlogController = logger.log url:url, "proxying request to blog api" request.get blogUrl, (err, r, data)-> + if r?.statusCode == 404 + return ErrorController.notFound(req, res, next) data = data.trim() try data = JSON.parse(data) diff --git a/services/web/test/UnitTests/coffee/Blog/BlogControllerTests.coffee b/services/web/test/UnitTests/coffee/Blog/BlogControllerTests.coffee index c13a89baea..5c17f6d939 100644 --- a/services/web/test/UnitTests/coffee/Blog/BlogControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Blog/BlogControllerTests.coffee @@ -1,4 +1,3 @@ - should = require('chai').should() SandboxedModule = require('sandboxed-module') assert = require('assert') @@ -17,9 +16,11 @@ describe "BlogController", -> url:"http://blog.sharelatex.env" @request = get: sinon.stub() + @ErrorController = {} @BlogController = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex": log:-> + "../Errors/ErrorController": @ErrorController "request": @request @req = {} @@ -41,6 +42,17 @@ describe "BlogController", -> @BlogController.getPage @req, @res + it "should send to the error controller if the blog responds 404", (done)-> + @req.url = "/blog/something.html" + @request.get.callsArgWith(1, null, {statusCode:404}) + + @ErrorController.notFound = (req, res)=> + assert.deepEqual req, @req + assert.deepEqual res, @res + done() + + @BlogController.getPage @req, @res + it "should proxy the image urls", (done)-> @BlogController._directProxy = sinon.stub() @req.url = "/something.png"