From 06aa578bdcbc8041396a58c2d1cc59cf303ae8ea Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Fri, 11 Oct 2019 09:57:16 +0100 Subject: [PATCH] Make it an error when we get no data from joinProject --- services/real-time/app/coffee/WebApiManager.coffee | 6 +++++- .../test/unit/coffee/WebApiManagerTests.coffee | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/services/real-time/app/coffee/WebApiManager.coffee b/services/real-time/app/coffee/WebApiManager.coffee index ce622d496f..3c0551a815 100644 --- a/services/real-time/app/coffee/WebApiManager.coffee +++ b/services/real-time/app/coffee/WebApiManager.coffee @@ -24,7 +24,11 @@ module.exports = WebApiManager = }, (error, response, data) -> return callback(error) if error? if 200 <= response.statusCode < 300 - callback null, data?.project, data?.privilegeLevel, data?.isRestrictedUser + if !data? || !data?.project? + err = new Error('no data returned from joinProject request') + logger.error {err, project_id, user_id}, "error accessing web api" + return callback(err) + callback null, data.project, data.privilegeLevel, data.isRestrictedUser else if response.statusCode == 429 logger.log(project_id, user_id, "rate-limit hit when joining project") callback(new CodedError("rate-limit hit when joining project", "TooManyRequests")) diff --git a/services/real-time/test/unit/coffee/WebApiManagerTests.coffee b/services/real-time/test/unit/coffee/WebApiManagerTests.coffee index 872666d19b..a87522c0a9 100644 --- a/services/real-time/test/unit/coffee/WebApiManagerTests.coffee +++ b/services/real-time/test/unit/coffee/WebApiManagerTests.coffee @@ -63,6 +63,16 @@ describe 'WebApiManager', -> .calledWith(new Error("non-success code from web: 500")) .should.equal true + describe "with no data from web", -> + beforeEach -> + @request.post = sinon.stub().callsArgWith(1, null, {statusCode: 200}, null) + @WebApiManager.joinProject @project_id, @user_id, @callback + + it "should call the callback with an error", -> + @callback + .calledWith(new Error("no data returned from joinProject request")) + .should.equal true + describe "when the project is over its rate limit", -> beforeEach -> @request.post = sinon.stub().callsArgWith(1, null, {statusCode: 429}, null)