Skip to content

Commit 6fbac1d

Browse files
fix: Dynamics 365 OAuth authentication issues
1 parent a60ebf7 commit 6fbac1d

File tree

7 files changed

+30
-20
lines changed

7 files changed

+30
-20
lines changed

lib/requests/http.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ var httpRequest = function (method, uri, data, additionalHeaders, successCallbac
7979
try {
8080
error = JSON.parse(rawData).error;
8181
} catch (e) {
82-
error = new Error("Unexpected Error");
82+
if (rawData.length > 0) {
83+
error = { message: rawData };
84+
}
85+
else {
86+
error = { message: "Unexpected Error" };
87+
}
8388
}
8489
error.status = res.statusCode;
8590
errorCallback(error);

lib/requests/sendRequest.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ module.exports = function sendRequest(method, uri, config, data, additionalHeade
4747
if (!additionalHeaders) {
4848
additionalHeaders = {};
4949
}
50-
additionalHeaders['Authorization'] = "Bearer: " + token;
50+
additionalHeaders['Authorization'] = "Bearer " + token.accessToken;
5151
}
5252

5353
executeRequest(method, config.webApiUrl + uri, stringifiedData, additionalHeaders, successCallback, errorCallback);

lib/requests/xhr.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ var xhrRequest = function (method, uri, data, additionalHeaders, successCallback
5353
try {
5454
error = JSON.parse(request.response).error;
5555
} catch (e) {
56-
error = new Error("Unexpected Error");
56+
if (request.response.length > 0) {
57+
error = { message: request.response };
58+
}
59+
else {
60+
error = { message: "Unexpected Error" };
61+
}
5762
}
5863
error.status = request.status;
5964
errorCallback(error);

lib/utilities/RequestConverter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ function convertRequestOptions (request, functionName, url, joinSymbol, config)
114114

115115
if (request.token) {
116116
ErrorHelper.stringParameterCheck(request.token, "DynamicsWebApi." + functionName, "request.token");
117-
headers["Authorization"] = "Bearer: " + request.token;
117+
headers["Authorization"] = "Bearer " + request.token;
118118
}
119119

120120
if (request.expand && request.expand.length) {

tests/callbacks-tests.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2657,7 +2657,7 @@ describe("callbacks -", function () {
26572657
var response = mocks.responses.multipleResponse;
26582658
scope = nock(mocks.webApiUrl, {
26592659
reqheaders: {
2660-
Authorization: "Bearer: token001"
2660+
Authorization: "Bearer token001"
26612661
}
26622662
})
26632663
.get("/tests")
@@ -2674,7 +2674,7 @@ describe("callbacks -", function () {
26742674
callback(token);
26752675
};
26762676

2677-
adalCallback("token001");
2677+
adalCallback({ accessToken: "token001" });
26782678
};
26792679

26802680
var dynamicsWebApiAuth = new DynamicsWebApiCallbacks({ onTokenRefresh: getToken, webApiUrl: mocks.webApiUrl });
@@ -2699,15 +2699,15 @@ describe("callbacks -", function () {
26992699
var response = mocks.responses.multipleResponse;
27002700
scope = nock(mocks.webApiUrl, {
27012701
reqheaders: {
2702-
Authorization: "Bearer: token001"
2702+
Authorization: "Bearer token001"
27032703
}
27042704
})
27052705
.get("/tests")
27062706
.reply(response.status, response.responseText, response.responseHeaders);
27072707

27082708
scope2 = nock(mocks.webApiUrl, {
27092709
reqheaders: {
2710-
Authorization: "Bearer: token002"
2710+
Authorization: "Bearer token002"
27112711
}
27122712
})
27132713
.get("/tests")
@@ -2724,7 +2724,7 @@ describe("callbacks -", function () {
27242724
callback(token);
27252725
};
27262726

2727-
adalCallback("token00" + ++i);
2727+
adalCallback({ accessToken: "token00" + ++i });
27282728
};
27292729

27302730
it("sends the request to the right end point and returns a response", function(done) {
@@ -2756,7 +2756,7 @@ describe("callbacks -", function () {
27562756
var response = mocks.responses.multipleResponse;
27572757
scope = nock(mocks.webApiUrl, {
27582758
reqheaders: {
2759-
Authorization: "Bearer: overriden"
2759+
Authorization: "Bearer overriden"
27602760
}
27612761
})
27622762
.get("/tests")
@@ -2767,7 +2767,7 @@ describe("callbacks -", function () {
27672767
nock.cleanAll();
27682768
});
27692769

2770-
var getToken = sinon.spy(function any(callback) { callback("token001") });
2770+
var getToken = sinon.spy(function any(callback) { callback({ accessToken: "token001" }) });
27712771

27722772
it("sends the request to the right end point and returns a response", function(done) {
27732773
var dynamicsWebApiAuth = new DynamicsWebApiCallbacks({ onTokenRefresh: getToken, webApiUrl: mocks.webApiUrl });

tests/main-tests.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2751,7 +2751,7 @@ describe("promises -", function () {
27512751
var response = mocks.responses.multipleResponse;
27522752
scope = nock(mocks.webApiUrl, {
27532753
reqheaders: {
2754-
Authorization: "Bearer: token001"
2754+
Authorization: "Bearer token001"
27552755
}
27562756
})
27572757
.get("/tests")
@@ -2768,7 +2768,7 @@ describe("promises -", function () {
27682768
callback(token);
27692769
};
27702770

2771-
adalCallback("token001");
2771+
adalCallback({ accessToken: "token001" });
27722772
};
27732773

27742774
var dynamicsWebApiAuth = new DynamicsWebApi({ onTokenRefresh: getToken, webApiUrl: mocks.webApiUrl });
@@ -2794,15 +2794,15 @@ describe("promises -", function () {
27942794
var response = mocks.responses.multipleResponse;
27952795
scope = nock(mocks.webApiUrl, {
27962796
reqheaders: {
2797-
Authorization: "Bearer: token001"
2797+
Authorization: "Bearer token001"
27982798
}
27992799
})
28002800
.get("/tests")
28012801
.reply(response.status, response.responseText, response.responseHeaders);
28022802

28032803
scope2 = nock(mocks.webApiUrl, {
28042804
reqheaders: {
2805-
Authorization: "Bearer: token002"
2805+
Authorization: "Bearer token002"
28062806
}
28072807
})
28082808
.get("/tests")
@@ -2819,7 +2819,7 @@ describe("promises -", function () {
28192819
callback(token);
28202820
};
28212821

2822-
adalCallback("token00" + ++i);
2822+
adalCallback({ accessToken: "token00" + ++i });
28232823
};
28242824

28252825
it("sends the request to the right end point and returns a response", function(done) {
@@ -2853,7 +2853,7 @@ describe("promises -", function () {
28532853
var response = mocks.responses.multipleResponse;
28542854
scope = nock(mocks.webApiUrl, {
28552855
reqheaders: {
2856-
Authorization: "Bearer: overriden"
2856+
Authorization: "Bearer overriden"
28572857
}
28582858
})
28592859
.get("/tests")
@@ -2864,7 +2864,7 @@ describe("promises -", function () {
28642864
nock.cleanAll();
28652865
});
28662866

2867-
var getToken = sinon.spy(function any(callback) { callback("token001") });
2867+
var getToken = sinon.spy(function any(callback) { callback({ accessToken: "token001" }) });
28682868

28692869
it("sends the request to the right end point and returns a response", function(done) {
28702870
var dynamicsWebApiAuth = new DynamicsWebApi({ onTokenRefresh: getToken, webApiUrl: mocks.webApiUrl });

tests/xhr-tests.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ describe("xhr -", function() {
293293
expand: [{ property: "prop" }]
294294
};
295295

296-
var getToken = function (callback) { callback("token001") };
296+
var getToken = function (callback) { callback({ accessToken: "token001" }) };
297297

298298
var dynamicsWebApiAuth = new DynamicsWebApi({
299299
webApiVersion: "8.2", onTokenRefresh: getToken
@@ -330,7 +330,7 @@ describe("xhr -", function() {
330330
});
331331

332332
it("sends the correct Authorization header", function() {
333-
expect(this.requests[0].requestHeaders['Authorization']).to.equal("Bearer: token001");
333+
expect(this.requests[0].requestHeaders['Authorization']).to.equal("Bearer token001");
334334
});
335335

336336
it("returns the correct response", function() {

0 commit comments

Comments
 (0)