diff --git a/packages/optimizely-sdk/CHANGELOG.MD b/packages/optimizely-sdk/CHANGELOG.MD index 19149da7b..c0a954612 100644 --- a/packages/optimizely-sdk/CHANGELOG.MD +++ b/packages/optimizely-sdk/CHANGELOG.MD @@ -1,3 +1,15 @@ +## 2.1.2 +June 25, 2018 + +* Fix: Failure to log success message when event dispatched ([#123](https://github.com/optimizely/javascript-sdk/pull/123)) +* Fix: Don't call success message when event fails to send ([#123](https://github.com/optimizely/javascript-sdk/pull/123)) + +## 2.0.5 +June 25, 2018 + +* Fix: Failure to log success message when event dispatched ([#123](https://github.com/optimizely/javascript-sdk/pull/123)) +* Fix: Don't call success message when event fails to send ([#123](https://github.com/optimizely/javascript-sdk/pull/123)) + ## 2.1.1 June 19, 2018 diff --git a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.js b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.js index 378fe51a8..0b6e2b9cf 100644 --- a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.js +++ b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.js @@ -30,7 +30,6 @@ module.exports = { dispatchEvent: function(eventObj, callback) { // Non-POST requests not supported if (eventObj.httpVerb !== 'POST') { - callback(new Error('httpVerb not supported: ' + eventObj.httpVerb)); return; } @@ -52,13 +51,15 @@ module.exports = { } }; - var requestCallback = function(error, response, body) { - if (response && response.statusCode && response.statusCode >= 200 && response.statusCode < 400 && callback && typeof callback === 'function') { - callback(); + var requestCallback = function(response) { + if (response && response.statusCode && response.statusCode >= 200 && response.statusCode < 400) { + callback(response); } }; var req = (parsedUrl.protocol === 'http:' ? http : https).request(requestOptions, requestCallback); + // Add no-op error listener to prevent this from throwing + req.on('error', function() {}); req.write(dataString); req.end(); return req; diff --git a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.tests.js b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.tests.js index 971199040..82ec57ee5 100644 --- a/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.tests.js +++ b/packages/optimizely-sdk/lib/plugins/event_dispatcher/index.node.tests.js @@ -49,13 +49,9 @@ describe('lib/plugins/event_dispatcher/node', function() { httpVerb: 'POST', }; - eventDispatcher.dispatchEvent(eventObj) - .on('response', function(response) { - assert.isTrue(response.statusCode === 200); + eventDispatcher.dispatchEvent(eventObj, function(resp) { + assert.equal(200, resp.statusCode); done(); - }) - .on('error', function(error) { - assert.fail('status code okay', 'status code not okay', ''); }); }); @@ -70,15 +66,15 @@ describe('lib/plugins/event_dispatcher/node', function() { eventDispatcher.dispatchEvent(eventObj, stubCallback.callback) .on('response', function(response) { - done(); sinon.assert.calledOnce(stubCallback.callback); + done(); }) .on('error', function(error) { assert.fail('status code okay', 'status code not okay', ''); }); }); - it('rejects GET httpVerb', function(done) { + it('rejects GET httpVerb', function() { var eventObj = { url: 'https://cdn.com/event', params: { @@ -87,16 +83,22 @@ describe('lib/plugins/event_dispatcher/node', function() { httpVerb: 'GET', }; - var callback = function(err) { - if (err) { - done(); - } else { - done(new Error('expected error not thrown')); - } - }; - + var callback = sinon.spy(); eventDispatcher.dispatchEvent(eventObj, callback); + sinon.assert.notCalled(callback); }); }); + + it('does not throw in the event of an error', function() { + var eventObj = { + url: 'https://example', + params: {}, + httpVerb: 'POST', + }; + + var callback = sinon.spy(); + eventDispatcher.dispatchEvent(eventObj, callback); + sinon.assert.notCalled(callback); + }); }); }); diff --git a/packages/optimizely-sdk/lib/utils/enums/index.js b/packages/optimizely-sdk/lib/utils/enums/index.js index a5ac00e57..2f9401eb6 100644 --- a/packages/optimizely-sdk/lib/utils/enums/index.js +++ b/packages/optimizely-sdk/lib/utils/enums/index.js @@ -137,7 +137,7 @@ exports.CONTROL_ATTRIBUTES = { exports.JAVASCRIPT_CLIENT_ENGINE = 'javascript-sdk'; exports.NODE_CLIENT_ENGINE = 'node-sdk'; -exports.NODE_CLIENT_VERSION = '2.1.1'; +exports.NODE_CLIENT_VERSION = '2.1.2'; /* * Notification types for use with NotificationCenter diff --git a/packages/optimizely-sdk/package-lock.json b/packages/optimizely-sdk/package-lock.json index ea1ac3f9e..723829bb2 100644 --- a/packages/optimizely-sdk/package-lock.json +++ b/packages/optimizely-sdk/package-lock.json @@ -1,6 +1,6 @@ { "name": "@optimizely/optimizely-sdk", - "version": "2.1.1", + "version": "2.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/optimizely-sdk/package.json b/packages/optimizely-sdk/package.json index 2d0defbf1..99b5cfaa6 100644 --- a/packages/optimizely-sdk/package.json +++ b/packages/optimizely-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@optimizely/optimizely-sdk", - "version": "2.1.1", + "version": "2.1.2", "description": "JavaScript SDK package for Optimizely X Full Stack", "main": "dist/optimizely.node.js", "browser": "lib/index.browser.js",