From 83a1039b7e1d82fa2fb75226b90d72d9c19c3ada Mon Sep 17 00:00:00 2001 From: James Allen Date: Wed, 12 Sep 2018 15:35:30 +0100 Subject: [PATCH] Add acceptance tests for RedirectManager --- .../coffee/RedirectUrlsTests.coffee | 28 +++++++++++++++++++ .../acceptance/config/settings.test.coffee | 14 ++++++++++ 2 files changed, 42 insertions(+) create mode 100644 services/web/test/acceptance/coffee/RedirectUrlsTests.coffee diff --git a/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee b/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee new file mode 100644 index 0000000000..90c5a62b9b --- /dev/null +++ b/services/web/test/acceptance/coffee/RedirectUrlsTests.coffee @@ -0,0 +1,28 @@ +should = require('chai').should() +assert = require('chai').assert +async = require("async") +request = require "./helpers/request" +MockV1Api = require "./helpers/MockV1Api" + +assertRedirect = (method, path, expectedStatusCode, destination, cb) -> + request[method] path, (error, response) -> + should.not.exist error + response.statusCode.should.equal expectedStatusCode + response.headers.location.should.equal destination + cb() + +describe "RedirectUrls", -> + before -> + @timeout(1000) + + it 'proxy static URLs', (done) -> + assertRedirect 'get', '/redirect/one', 302, '/destination/one', done + + it 'proxy dynamic URLs', (done) -> + assertRedirect 'get', '/redirect/params/42', 302, '/destination/42/params', done + + it 'proxy URLs with baseUrl', (done) -> + assertRedirect 'get', '/redirect/base_url', 302, 'https://example.com/destination/base_url', done + + it 'proxy URLs with POST', (done) -> + assertRedirect 'post', '/redirect/post', 307, '/destination/post', done diff --git a/services/web/test/acceptance/config/settings.test.coffee b/services/web/test/acceptance/config/settings.test.coffee index 1ca1b55e48..400d24d016 100644 --- a/services/web/test/acceptance/config/settings.test.coffee +++ b/services/web/test/acceptance/config/settings.test.coffee @@ -108,3 +108,17 @@ module.exports = overleaf: host: "http://overleaf.test:5000" + + redirects: + '/redirect/one': '/destination/one', + '/redirect/post': { + method: 'post', + url: '/destination/post' + }, + '/redirect/base_url': { + baseUrl: 'https://example.com' + url: '/destination/base_url' + }, + '/redirect/params/:id': { + url: (params) -> "/destination/#{params.id}/params" + }