Skip to content

Commit 087e772

Browse files
Update tests with new auth payloads and notification types
1 parent 3fbbfa6 commit 087e772

26 files changed

+112
-111
lines changed

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@splitsoftware/splitio",
3-
"version": "10.27.1-rc.3",
3+
"version": "10.27.1-rc.4",
44
"description": "Split SDK",
55
"files": [
66
"README.md",
@@ -40,7 +40,7 @@
4040
"node": ">=6"
4141
},
4242
"dependencies": {
43-
"@splitsoftware/splitio-commons": "1.16.1-rc.11",
43+
"@splitsoftware/splitio-commons": "1.16.1-rc.12",
4444
"@types/google.analytics": "0.0.40",
4545
"@types/ioredis": "^4.28.0",
4646
"bloom-filters": "^3.0.0",

src/__tests__/browserSuites/push-fallback.spec.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import streamingPausedControlPriMessage2 from '../mocks/message.CONTROL.STREAMIN
2020
import streamingDisabledControlPriMessage from '../mocks/message.CONTROL.STREAMING_DISABLED.control_pri.1586987434950.json';
2121

2222
import splitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552649999.json';
23-
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.UNBOUNDED.1457552640000.json';
23+
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIPS_MS_UPDATE.UNBOUNDED.1457552640000.json';
2424

2525
import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json';
2626
import authPushEnabledNicolasAndMarcio from '../mocks/auth.pushEnabled.nicolas@split.io.marcio@split.io.json';
@@ -66,11 +66,11 @@ const MILLIS_CREATE_CLIENT_DURING_PUSH = MILLIS_STREAMING_UP_OCCUPANCY + 50;
6666
const MILLIS_SPLIT_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_UP_OCCUPANCY + 100;
6767

6868
const MILLIS_STREAMING_PAUSED_CONTROL = MILLIS_SPLIT_UPDATE_EVENT_DURING_PUSH + 100;
69-
const MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_POLLING = MILLIS_STREAMING_PAUSED_CONTROL + 100;
69+
const MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_POLLING = MILLIS_STREAMING_PAUSED_CONTROL + 100;
7070
const MILLIS_STREAMING_RESUMED_CONTROL = MILLIS_STREAMING_PAUSED_CONTROL + settings.scheduler.featuresRefreshRate + 100;
71-
const MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_RESUMED_CONTROL + 100;
71+
const MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_PUSH = MILLIS_STREAMING_RESUMED_CONTROL + 100;
7272

73-
const MILLIS_STREAMING_PAUSED_CONTROL_2 = MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH + 100;
73+
const MILLIS_STREAMING_PAUSED_CONTROL_2 = MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_PUSH + 100;
7474
const MILLIS_STREAMING_RESET_WHILE_PUSH_DOWN = MILLIS_STREAMING_PAUSED_CONTROL_2 + 100;
7575
const MILLIS_STREAMING_RESET_WHILE_PUSH_UP = MILLIS_STREAMING_RESET_WHILE_PUSH_DOWN + settings.scheduler.featuresRefreshRate;
7676
const MILLIS_STREAMING_DISABLED_CONTROL = MILLIS_STREAMING_RESET_WHILE_PUSH_UP + 100;
@@ -88,11 +88,11 @@ const MILLIS_DESTROY = MILLIS_STREAMING_DISABLED_CONTROL + settings.scheduler.fe
8888
* 0.55 secs: create a new client while streaming -> initial fetch (/memberships/marcio), auth, SSE connection and syncAll (/splitChanges, /memberships/nicolas, /memberships/marcio)
8989
* 0.6 secs: SPLIT_UPDATE event -> /splitChanges
9090
* 0.7 secs: Streaming down (CONTROL event) -> fetch due to fallback to polling (/splitChanges, /memberships/nicolas, /memberships/marcio)
91-
* 0.8 secs: MEMBERSHIP_MS_UPDATE event ignored
91+
* 0.8 secs: MEMBERSHIPS_MS_UPDATE event ignored
9292
* 0.9 secs: periodic fetch due to polling (/splitChanges)
9393
* 0.95 secs: periodic fetch due to polling (/memberships/nicolas, /memberships/marcio)
9494
* 1.0 secs: Streaming up (CONTROL event) -> syncAll (/splitChanges, /memberships/nicolas, /memberships/marcio)
95-
* 1.1 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas, /memberships/marcio
95+
* 1.1 secs: Unbounded MEMBERSHIPS_MS_UPDATE event -> /memberships/nicolas, /memberships/marcio
9696
* 1.2 secs: Streaming down (CONTROL event) -> fetch due to fallback to polling (/splitChanges, /memberships/nicolas, /memberships/marcio)
9797
* 1.3 secs: STREAMING_RESET control event -> auth, SSE connection, syncAll and stop polling
9898
* 1.5 secs: STREAMING_RESET control event -> auth, SSE connection, syncAll
@@ -110,7 +110,7 @@ export function testFallback(fetchMock, assert) {
110110
// mock SSE open and message events
111111
setMockListener((eventSourceInstance) => {
112112

113-
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_NTcwOTc3MDQx_mySegments,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_splits,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
113+
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_control,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_flags,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_memberships,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
114114
assert.equals(eventSourceInstance.url, expectedSSEurl, 'EventSource URL is the expected');
115115

116116
setTimeout(() => {
@@ -136,7 +136,7 @@ export function testFallback(fetchMock, assert) {
136136
secondClient = splitio.client(secondUserKey);
137137

138138
setMockListener((eventSourceInstance) => {
139-
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_MjE0MTkxOTU2Mg%3D%3D_mySegments,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_NTcwOTc3MDQx_mySegments,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_splits,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolasAndMarcio.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
139+
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_control,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_flags,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_memberships,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolasAndMarcio.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
140140
assert.equals(eventSourceInstance.url, expectedSSEurl, 'new EventSource URL is the expected');
141141
eventSourceInstance.emitOpen();
142142

@@ -155,7 +155,7 @@ export function testFallback(fetchMock, assert) {
155155
setTimeout(() => {
156156
assert.equal(eventSourceInstance.readyState, EventSourceMock.OPEN, 'EventSource connection keeps opened after PUSH_SUBSYSTEM_DOWN (STREAMING_PAUSED event)');
157157
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
158-
}, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_POLLING - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIP_MS_UPDATE event while polling, to check that we are ignoring it
158+
}, MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_POLLING - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIPS_MS_UPDATE event while polling, to check that we are ignoring it
159159

160160
setTimeout(() => {
161161
eventSourceInstance.emitMessage(streamingResumedControlPriMessage);
@@ -167,7 +167,7 @@ export function testFallback(fetchMock, assert) {
167167
assert.equal(client.getTreatment('real_split'), 'on', 'evaluation with updated segment');
168168
});
169169
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
170-
}, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIP_MS_UPDATE event
170+
}, MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_PUSH - MILLIS_CREATE_CLIENT_DURING_PUSH); // send a MEMBERSHIPS_MS_UPDATE event
171171

172172
setTimeout(() => {
173173
eventSourceInstance.emitMessage(streamingPausedControlPriMessage2);
@@ -271,10 +271,10 @@ export function testFallback(fetchMock, assert) {
271271
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: membershipsNicolasMock1 });
272272
fetchMock.getOnce(url(settings, '/memberships/marcio%40split.io'), { status: 200, body: membershipsMarcio });
273273

274-
// fetch due to MEMBERSHIP_MS_UPDATE event
274+
// fetch due to MEMBERSHIPS_MS_UPDATE event
275275
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), function () {
276276
const lapse = Date.now() - start;
277-
assert.true(nearlyEqual(lapse, MILLIS_MEMBERSHIP_MS_UPDATE_EVENT_DURING_PUSH), 'sync due to MEMBERSHIP_MS_UPDATE event');
277+
assert.true(nearlyEqual(lapse, MILLIS_MEMBERSHIPS_MS_UPDATE_EVENT_DURING_PUSH), 'sync due to MEMBERSHIPS_MS_UPDATE event');
278278
return { status: 200, body: membershipsNicolasMock2 };
279279
});
280280
fetchMock.getOnce(url(settings, '/memberships/marcio%40split.io'), { status: 200, body: membershipsMarcio });

src/__tests__/browserSuites/push-initialization-retries.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export function testPushRetriesDueToSseErrors(fetchMock, assert) {
114114
let start, splitio, client, ready = false;
115115
const expectedTimeToSSEsuccess = (settings.scheduler.pushRetryBackoffBase * Math.pow(2, 0) + settings.scheduler.pushRetryBackoffBase * Math.pow(2, 1));
116116

117-
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_NTcwOTc3MDQx_mySegments,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_splits,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
117+
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_control,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_flags,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_memberships,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
118118
let sseattempts = 0;
119119
setMockListener(function (eventSourceInstance) {
120120
assert.equal(eventSourceInstance.url, expectedSSEurl, 'SSE url is correct');

src/__tests__/browserSuites/push-synchronization-retries.spec.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import membershipsMarcio from '../mocks/memberships.marcio@split.io.json';
77

88
import splitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552649999.json';
99
import oldSplitUpdateMessage from '../mocks/message.SPLIT_UPDATE.1457552620999.json';
10-
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIP_MS_UPDATE.UNBOUNDED.1457552640000.json';
10+
import mySegmentsUpdateMessage from '../mocks/message.MEMBERSHIPS_MS_UPDATE.UNBOUNDED.1457552640000.json';
1111
import splitKillMessage from '../mocks/message.SPLIT_KILL.1457552650000.json';
1212

1313
import authPushEnabledNicolas from '../mocks/auth.pushEnabled.nicolas@split.io.json';
@@ -48,8 +48,8 @@ const MILLIS_RETRY_FOR_FIRST_SPLIT_UPDATE_EVENT = 300;
4848

4949
const MILLIS_SECOND_SPLIT_UPDATE_EVENT = 400;
5050

51-
const MILLIS_MYSEGMENTS_UPDATE_V3_EVENT = 500;
52-
const MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT = 1200;
51+
const MILLIS_MEMBERSHIPS_MS_UPDATE = 500;
52+
const MILLIS_THIRD_RETRY_FOR_MEMBERSHIPS_MS_UPDATE = 1200;
5353

5454
const MILLIS_SPLIT_KILL_EVENT = 1300;
5555
const MILLIS_THIRD_RETRY_FOR_SPLIT_KILL_EVENT = 2000;
@@ -64,10 +64,10 @@ const MILLIS_THIRD_RETRY_FOR_SPLIT_KILL_EVENT = 2000;
6464
*
6565
* 0.4 secs: SPLIT_UPDATE event with old changeNumber -> SDK_UPDATE not triggered
6666
*
67-
* 0.5 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/marcio@split.io OK, /memberships/nicolas@split.io: network error
68-
* 0.6 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io retry: invalid JSON response
69-
* 0.8 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io: server error
70-
* 1.2 secs: Unbounded MEMBERSHIP_MS_UPDATE event -> /memberships/nicolas@split.io retry: success -> SDK_UPDATE triggered
67+
* 0.5 secs: Unbounded MEMBERSHIPS_MS_UPDATE event -> /memberships/marcio@split.io OK, /memberships/nicolas@split.io: network error
68+
* 0.6 secs: Unbounded MEMBERSHIPS_MS_UPDATE event -> /memberships/nicolas@split.io retry: invalid JSON response
69+
* 0.8 secs: Unbounded MEMBERSHIPS_MS_UPDATE event -> /memberships/nicolas@split.io: server error
70+
* 1.2 secs: Unbounded MEMBERSHIPS_MS_UPDATE event -> /memberships/nicolas@split.io retry: success -> SDK_UPDATE triggered
7171
*
7272
* 1.3 secs: SPLIT_KILL event -> /splitChanges: outdated response -> SDK_UPDATE triggered although fetches fail
7373
* 1.4 secs: SPLIT_KILL event -> /splitChanges retry: network error
@@ -88,7 +88,7 @@ export function testSynchronizationRetries(fetchMock, assert) {
8888
setMockListener(function (eventSourceInstance) {
8989
start = Date.now();
9090

91-
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_NTcwOTc3MDQx_mySegments,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_splits,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
91+
const expectedSSEurl = `${url(settings, '/sse')}?channels=NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_control,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_flags,NzM2MDI5Mzc0_NDEzMjQ1MzA0Nw%3D%3D_memberships,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_pri,%5B%3Foccupancy%3Dmetrics.publishers%5Dcontrol_sec&accessToken=${authPushEnabledNicolas.token}&v=1.1&heartbeats=true&SplitSDKVersion=${settings.version}&SplitSDKClientKey=h-1>`;
9292
assert.equals(eventSourceInstance.url, expectedSSEurl, 'EventSource URL is the expected');
9393

9494
/* events on first SSE connection */
@@ -114,11 +114,11 @@ export function testSynchronizationRetries(fetchMock, assert) {
114114
assert.equal(client.getTreatment('splitters'), 'off', 'evaluation with initial MySegments list');
115115
client.once(client.Event.SDK_UPDATE, () => {
116116
const lapse = Date.now() - start;
117-
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'SDK_UPDATE due to MEMBERSHIP_MS_UPDATE event');
117+
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MEMBERSHIPS_MS_UPDATE), 'SDK_UPDATE due to MEMBERSHIPS_MS_UPDATE event');
118118
assert.equal(client.getTreatment('splitters'), 'on', 'evaluation with updated MySegments list');
119119
});
120120
eventSourceInstance.emitMessage(mySegmentsUpdateMessage);
121-
}, MILLIS_MYSEGMENTS_UPDATE_V3_EVENT); // send a MEMBERSHIP_MS_UPDATE event with a new changeNumber after 0.4 seconds
121+
}, MILLIS_MEMBERSHIPS_MS_UPDATE); // send a MEMBERSHIPS_MS_UPDATE event with a new changeNumber after 0.4 seconds
122122

123123
setTimeout(() => {
124124
client.once(client.Event.SDK_UPDATE, () => {
@@ -163,16 +163,16 @@ export function testSynchronizationRetries(fetchMock, assert) {
163163
return { status: 200, body: splitChangesMock3 };
164164
});
165165

166-
// fetch due to first MEMBERSHIP_MS_UPDATE event
166+
// fetch due to first MEMBERSHIPS_MS_UPDATE event
167167
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { throws: new TypeError('Network error') });
168-
// fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
168+
// fetch retry for MEMBERSHIPS_MS_UPDATE event, due to previous fail
169169
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 200, body: '{ "since": 1457552620999, "til' }); // invalid JSON response
170-
// fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
170+
// fetch retry for MEMBERSHIPS_MS_UPDATE event, due to previous fail
171171
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), { status: 500, body: 'server error' });
172-
// second fetch retry for MEMBERSHIP_MS_UPDATE event, due to previous fail
172+
// second fetch retry for MEMBERSHIPS_MS_UPDATE event, due to previous fail
173173
fetchMock.getOnce(url(settings, '/memberships/nicolas%40split.io'), function () {
174174
const lapse = Date.now() - start;
175-
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MYSEGMENT_UPDATE_EVENT), 'sync second retry for MEMBERSHIP_MS_UPDATE event');
175+
assert.true(nearlyEqual(lapse, MILLIS_THIRD_RETRY_FOR_MEMBERSHIPS_MS_UPDATE), 'sync second retry for MEMBERSHIPS_MS_UPDATE event');
176176
return { status: 200, body: membershipsNicolasMock2 };
177177
});
178178

0 commit comments

Comments
 (0)