Просмотр исходного кода

Add acceptance tests for RedirectManager

James Allen 8 лет назад
Родитель
Сommit
83a1039b7e

+ 28 - 0
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

+ 14 - 0
services/web/test/acceptance/config/settings.test.coffee

@@ -108,3 +108,17 @@ module.exports =
 
 
 	overleaf:
 	overleaf:
 		host: "http://overleaf.test:5000"
 		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"
+		}