Skip to content

Commit bc22063

Browse files
add test to validate that NodeJS SDK times out when a client-side SDK key is provided
1 parent ebb98d2 commit bc22063

File tree

4 files changed

+69
-14
lines changed

4 files changed

+69
-14
lines changed

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"node": ">=6"
4141
},
4242
"dependencies": {
43-
"@splitsoftware/splitio-commons": "1.10.1-rc.3",
43+
"@splitsoftware/splitio-commons": "1.10.1-rc.4",
4444
"@types/google.analytics": "0.0.40",
4545
"@types/ioredis": "^4.28.0",
4646
"bloom-filters": "^3.0.0",
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { SplitFactory } from '../../';
2+
3+
import splitChangesMock1 from '../mocks/splitchanges.since.-1.json';
4+
import splitChangesMock2 from '../mocks/splitchanges.since.1457552620999.json';
5+
6+
const readyTimeout = 0.1;
7+
8+
const baseConfig = {
9+
core: {
10+
authorizationKey: '<fake-token>',
11+
},
12+
startup: {
13+
readyTimeout,
14+
},
15+
streamingEnabled: false
16+
};
17+
18+
export default function (fetchMock, assert) {
19+
20+
assert.test(t => { // Timeout test: we provide a client-side SDK key on server-side (403 error)
21+
const testUrls = {
22+
sdk: 'https://sdk.baseurl/readinessSuite1',
23+
events: 'https://events.baseurl/readinessSuite1'
24+
};
25+
26+
fetchMock.getOnce(testUrls.sdk + '/splitChanges?since=-1', { status: 200, body: splitChangesMock1 });
27+
fetchMock.getOnce(testUrls.sdk + '/splitChanges?since=1457552620999', { status: 200, body: splitChangesMock2 });
28+
fetchMock.get(new RegExp(testUrls.sdk + '/segmentChanges/*'), 403);
29+
fetchMock.postOnce(testUrls.events + '/events/bulk', 200);
30+
31+
const splitio = SplitFactory({
32+
...baseConfig, urls: testUrls
33+
});
34+
const client = splitio.client();
35+
36+
t.true(client.track('some_key', 'some_tt', 'some_event_type'), 'since client is not destroyed, client.track returns true');
37+
38+
client.once(client.Event.SDK_READY, () => {
39+
t.fail('### IS READY - NOT TIMED OUT when it should.');
40+
t.end();
41+
});
42+
client.once(client.Event.SDK_READY_TIMED_OUT, () => {
43+
t.pass('### SDK TIMED OUT - SegmentChanges requests with client-side SDK key should fail with 403. Timed out.');
44+
45+
t.false(client.track('some_key', 'some_tt', 'some_event_type'), 'since client is flagged as destroyed, client.track returns false');
46+
47+
client.destroy().then(() => { t.end(); });
48+
});
49+
});
50+
51+
}

src/__tests__/online/node.spec.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import expectedTreatmentsSuite from '../nodeSuites/expected-treatments.spec';
1414
import managerSuite from '../nodeSuites/manager.spec';
1515
import ipAddressesSetting from '../nodeSuites/ip-addresses-setting.spec';
1616
import ipAddressesSettingDebug from '../nodeSuites/ip-addresses-setting.debug.spec';
17+
import readinessSuite from '../nodeSuites/readiness.spec';
1718
import readyPromiseSuite from '../nodeSuites/ready-promise.spec';
1819
import { fetchSpecificSplits, fetchSpecificSplitsForFlagSets } from '../nodeSuites/fetch-specific-splits.spec';
1920

@@ -78,6 +79,9 @@ tape('## Node JS - E2E CI Tests ##', async function (assert) {
7879
assert.test('E2E / IP Addresses Setting', ipAddressesSetting.bind(null, fetchMock));
7980
assert.test('E2E / IP Addresses Setting Debug', ipAddressesSettingDebug.bind(null, fetchMock));
8081

82+
/* Validate readiness */
83+
assert.test('E2E / Readiness', readinessSuite.bind(null, fetchMock));
84+
8185
/* Validate readiness with ready promises */
8286
assert.test('E2E / Ready promise', readyPromiseSuite.bind(null, key, fetchMock));
8387

0 commit comments

Comments
 (0)