toggle project history using setting

This commit is contained in:
Hayden Faulds 2017-10-11 11:18:34 +01:00
parent f017a94b7e
commit 299112f6e0
3 changed files with 52 additions and 19 deletions

View file

@ -6,7 +6,8 @@ AuthenticationController = require "../Authentication/AuthenticationController"
module.exports = HistoryController =
proxyToHistoryApi: (req, res, next = (error) ->) ->
user_id = AuthenticationController.getLoggedInUserId req
url = settings.apis.trackchanges.url + req.url
url = HistoryController.buildHistoryServiceUrl() + req.url
logger.log url: url, "proxying to track-changes api"
getReq = request(
url: url
@ -18,3 +19,9 @@ module.exports = HistoryController =
getReq.on "error", (error) ->
logger.error err: error, "track-changes API error"
next(error)
buildHistoryServiceUrl: () ->
if settings.apis.project_history.enabled
return settings.apis.project_history.url
else
return settings.apis.trackchanges.url

View file

@ -104,6 +104,9 @@ module.exports = settings =
url : "http://localhost:3005"
trackchanges:
url : "http://localhost:3015"
project_history:
enabled: false
url : "http://localhost:3054"
docstore:
url : "http://localhost:3016"
pubUrl: "http://localhost:3016"

View file

@ -22,37 +22,60 @@ describe "HistoryController", ->
@next = sinon.stub()
@settings.apis =
trackchanges:
enabled: false
url: "http://trackchanges.example.com"
project_history:
url: "http://project_history.example.com"
@proxy =
events: {}
pipe: sinon.stub()
on: (event, handler) -> @events[event] = handler
@request.returns @proxy
@HistoryController.proxyToHistoryApi @req, @res, @next
describe "successfully", ->
it "should get the user id", ->
@AuthenticationController.getLoggedInUserId
.calledWith(@req)
.should.equal true
describe "with project history enabled", ->
beforeEach ->
@settings.apis.project_history.enabled = true
@HistoryController.proxyToHistoryApi @req, @res, @next
it "should call the track changes api", ->
@request
.calledWith({
url: "#{@settings.apis.trackchanges.url}#{@req.url}"
method: @req.method
headers:
"X-User-Id": @user_id
})
.should.equal true
it "should get the user id", ->
@AuthenticationController.getLoggedInUserId
.calledWith(@req)
.should.equal true
it "should pipe the response to the client", ->
@proxy.pipe
.calledWith(@res)
.should.equal true
it "should call the project history api", ->
@request
.calledWith({
url: "#{@settings.apis.project_history.url}#{@req.url}"
method: @req.method
headers:
"X-User-Id": @user_id
})
.should.equal true
it "should pipe the response to the client", ->
@proxy.pipe
.calledWith(@res)
.should.equal true
describe "with project history disabled", ->
beforeEach ->
@settings.apis.project_history.enabled = false
@HistoryController.proxyToHistoryApi @req, @res, @next
it "should call the track changes api", ->
@request
.calledWith({
url: "#{@settings.apis.trackchanges.url}#{@req.url}"
method: @req.method
headers:
"X-User-Id": @user_id
})
.should.equal true
describe "with an error", ->
beforeEach ->
@HistoryController.proxyToHistoryApi @req, @res, @next
@proxy.events["error"].call(@proxy, @error = new Error("oops"))
it "should pass the error up the call chain", ->