Skip to content

Commit 62dd388

Browse files
updating uid2 or euid options for tests
1 parent f95bbbc commit 62dd388

File tree

4 files changed

+191
-51
lines changed

4 files changed

+191
-51
lines changed

src/integrationTests/basic.test.ts

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,6 +1048,8 @@ describe('SDK bootstraps itself if init has already been completed', () => {
10481048
const makeIdentity = mocks.makeIdentityV2;
10491049
const email = '[email protected]';
10501050
const emailHash = 'lz3+Rj7IV4X1+Vr1ujkG7tstkxwk5pgkqJ6mXbpOgTs=';
1051+
const phone = '+12345678901';
1052+
const phoneHash = '10e6f0b47054a83359477dcb35231db6de5c69fb1816e1a6b98e192de9e5b9ee';
10511053

10521054
beforeEach(() => {
10531055
sdkWindow.__uid2 = new UID2();
@@ -1066,10 +1068,16 @@ describe('SDK bootstraps itself if init has already been completed', () => {
10661068
expect(uid2.getAdvertisingToken()).toBe(identity.advertising_token);
10671069
expect(uid2.getIdentity()).toStrictEqual(identity);
10681070
expect(async () => {
1069-
await uid2.setIdentityFromEmail(email, mocks.makeCstgOption());
1071+
await uid2.setIdentityFromEmail(email, mocks.makeUid2CstgOption());
10701072
}).not.toThrow();
10711073
expect(async () => {
1072-
uid2.setIdentityFromEmailHash(emailHash, mocks.makeCstgOption());
1074+
uid2.setIdentityFromEmailHash(emailHash, mocks.makeUid2CstgOption());
1075+
}).not.toThrow();
1076+
expect(async () => {
1077+
await uid2.setIdentityFromPhone(phone, mocks.makeUid2CstgOption());
1078+
}).not.toThrow();
1079+
expect(async () => {
1080+
uid2.setIdentityFromPhoneHash(phoneHash, mocks.makeUid2CstgOption());
10731081
}).not.toThrow();
10741082
});
10751083

@@ -1078,10 +1086,16 @@ describe('SDK bootstraps itself if init has already been completed', () => {
10781086
expect(uid2.getAdvertisingToken()).toBe(undefined);
10791087
expect(uid2.getIdentity()).toStrictEqual(null);
10801088
expect(async () => {
1081-
await uid2.setIdentityFromEmail(email, mocks.makeCstgOption());
1089+
await uid2.setIdentityFromEmail(email, mocks.makeUid2CstgOption());
1090+
}).rejects.toThrow();
1091+
expect(async () => {
1092+
await uid2.setIdentityFromEmailHash(emailHash, mocks.makeUid2CstgOption());
10821093
}).rejects.toThrow();
10831094
expect(async () => {
1084-
await uid2.setIdentityFromEmailHash(emailHash, mocks.makeCstgOption());
1095+
await uid2.setIdentityFromPhone(phone, mocks.makeUid2CstgOption());
1096+
}).rejects.toThrow();
1097+
expect(async () => {
1098+
await uid2.setIdentityFromPhoneHash(phoneHash, mocks.makeUid2CstgOption());
10851099
}).rejects.toThrow();
10861100
});
10871101
});
@@ -1090,6 +1104,8 @@ describe('Token retrieval and related public functions working without init', ()
10901104
const makeIdentity = mocks.makeIdentityV2;
10911105
const email = '[email protected]';
10921106
const emailHash = 'lz3+Rj7IV4X1+Vr1ujkG7tstkxwk5pgkqJ6mXbpOgTs=';
1107+
const phone = '+12345678901';
1108+
const phoneHash = '10e6f0b47054a83359477dcb35231db6de5c69fb1816e1a6b98e192de9e5b9ee';
10931109

10941110
test('should be able to find identity set without init', async () => {
10951111
const identity = { ...makeIdentity(), refresh_from: Date.now() + 100 };
@@ -1110,10 +1126,16 @@ describe('Token retrieval and related public functions working without init', ()
11101126
expect(uid2.getIdentity()).toStrictEqual(identity);
11111127
expect(uid2.getAdvertisingTokenAsync()).resolves.toBe(identity.advertising_token);
11121128
expect(async () => {
1113-
await uid2.setIdentityFromEmail(email, mocks.makeCstgOption());
1129+
await uid2.setIdentityFromEmail(email, mocks.makeUid2CstgOption());
1130+
}).rejects.toThrow();
1131+
expect(async () => {
1132+
await uid2.setIdentityFromEmailHash(emailHash, mocks.makeUid2CstgOption());
1133+
}).rejects.toThrow();
1134+
expect(async () => {
1135+
await uid2.setIdentityFromPhone(phone, mocks.makeUid2CstgOption());
11141136
}).rejects.toThrow();
11151137
expect(async () => {
1116-
await uid2.setIdentityFromEmailHash(emailHash, mocks.makeCstgOption());
1138+
await uid2.setIdentityFromPhoneHash(phoneHash, mocks.makeUid2CstgOption());
11171139
}).rejects.toThrow();
11181140
functions.removeIdentity();
11191141
});

src/integrationTests/clientSideTokenGeneration.test.ts

Lines changed: 122 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@ import { NAME_CURVE } from '../mocks';
33
import { base64ToBytes, bytesToBase64 } from '../encoding/base64';
44
import { EventType } from '../callbackManager';
55
import { sdkWindow, UID2 } from '../uid2Sdk';
6+
import { EUID } from '../euidSdk';
67

78
let uid2: UID2;
9+
let euid: EUID;
10+
let uid2OrEuid: UID2 | EUID;
811
let xhrMock: any;
912
let serverKeyPair: CryptoKeyPair;
10-
let serverPublicKey: string;
13+
let serverPublicKeyUid2: string;
14+
let serverPublicKeyEuid: string;
1115

1216
mocks.setupFakeTime();
1317

@@ -22,62 +26,120 @@ beforeAll(async () => {
2226
);
2327

2428
const serverPubKeyArray = await crypto.subtle.exportKey('spki', serverKeyPair.publicKey);
25-
serverPublicKey = `UID2-X-L-` + bytesToBase64(new Uint8Array(serverPubKeyArray));
29+
serverPublicKeyUid2 = `UID2-X-L-` + bytesToBase64(new Uint8Array(serverPubKeyArray));
30+
serverPublicKeyEuid = `EUID-X-L-` + bytesToBase64(new Uint8Array(serverPubKeyArray));
2631
});
2732

2833
beforeEach(() => {
2934
xhrMock = new mocks.XhrMock(sdkWindow);
3035
mocks.setCookieMock(sdkWindow.document);
3136
removeUid2LocalStorage();
37+
removeEuidLocalStorage();
3238
});
3339

3440
afterEach(() => {
3541
mocks.resetFakeTime();
3642
});
3743

3844
const removeUid2LocalStorage = mocks.removeUid2LocalStorage;
45+
const removeEuidLocalStorage = mocks.removeEuidLocalStorage;
3946

4047
describe('Client-side token generation Tests', () => {
4148
const scenarios = [
4249
{
4350
name: 'setIdentityFromEmail',
44-
setInvalidIdentity: () => uid2.setIdentityFromEmail('test.com', mocks.makeCstgOption()),
51+
identityType: 'uid2',
52+
setInvalidIdentity: () => uid2.setIdentityFromEmail('test.com', mocks.makeUid2CstgOption()),
4553
setIdentity: (serverPublicKey?: string) =>
46-
uid2.setIdentityFromEmail('[email protected]', mocks.makeCstgOption({ serverPublicKey })),
54+
uid2.setIdentityFromEmail(
55+
56+
mocks.makeUid2CstgOption({ serverPublicKey })
57+
),
4758
},
4859
{
4960
name: 'setIdentityFromEmailHash',
61+
identityType: 'uid2',
5062
setInvalidIdentity: () =>
51-
uid2.setIdentityFromEmailHash('[email protected]', mocks.makeCstgOption()),
63+
uid2.setIdentityFromEmailHash('[email protected]', mocks.makeUid2CstgOption()),
5264
setIdentity: (serverPublicKey?: string) =>
5365
uid2.setIdentityFromEmailHash(
5466
'lz3+Rj7IV4X1+Vr1ujkG7tstkxwk5pgkqJ6mXbpOgTs=',
55-
mocks.makeCstgOption({ serverPublicKey })
67+
mocks.makeUid2CstgOption({ serverPublicKey })
5668
),
5769
},
5870
{
5971
name: 'setIdentityFromPhone',
60-
setInvalidIdentity: () => uid2.setIdentityFromPhone('12345678910', mocks.makeCstgOption()),
72+
identityType: 'uid2',
73+
setInvalidIdentity: () =>
74+
uid2.setIdentityFromPhone('12345678910', mocks.makeUid2CstgOption()),
6175
setIdentity: (serverPublicKey?: string) =>
62-
uid2.setIdentityFromPhone('+12345678910', mocks.makeCstgOption({ serverPublicKey })),
76+
uid2.setIdentityFromPhone('+12345678910', mocks.makeUid2CstgOption({ serverPublicKey })),
6377
},
6478
{
6579
name: 'setIdentityFromPhoneHash',
80+
identityType: 'uid2',
6681
setInvalidIdentity: () =>
67-
uid2.setIdentityFromPhoneHash('+12345678910', mocks.makeCstgOption()),
82+
uid2.setIdentityFromPhoneHash('+12345678910', mocks.makeUid2CstgOption()),
6883
setIdentity: (serverPublicKey?: string) =>
6984
uid2.setIdentityFromPhoneHash(
7085
'kVJ+4ilhrqm3HZDDnCQy4niZknvCoM4MkoVzZrQSdJw=',
71-
mocks.makeCstgOption({ serverPublicKey })
86+
mocks.makeUid2CstgOption({ serverPublicKey })
87+
),
88+
},
89+
{
90+
name: 'setIdentityFromEmail',
91+
identityType: 'euid',
92+
setInvalidIdentity: () => euid.setIdentityFromEmail('test.com', mocks.makeEuidCstgOption()),
93+
setIdentity: (serverPublicKey?: string) =>
94+
euid.setIdentityFromEmail(
95+
96+
mocks.makeEuidCstgOption({ serverPublicKey })
97+
),
98+
},
99+
{
100+
name: 'setIdentityFromEmailHash',
101+
identityType: 'euid',
102+
setInvalidIdentity: () =>
103+
euid.setIdentityFromEmailHash('[email protected]', mocks.makeEuidCstgOption()),
104+
setIdentity: (serverPublicKey?: string) =>
105+
euid.setIdentityFromEmailHash(
106+
'lz3+Rj7IV4X1+Vr1ujkG7tstkxwk5pgkqJ6mXbpOgTs=',
107+
mocks.makeEuidCstgOption({ serverPublicKey })
108+
),
109+
},
110+
{
111+
name: 'setIdentityFromPhone',
112+
identityType: 'euid',
113+
setInvalidIdentity: () =>
114+
euid.setIdentityFromPhone('12345678910', mocks.makeEuidCstgOption()),
115+
setIdentity: (serverPublicKey?: string) =>
116+
euid.setIdentityFromPhone('+12345678910', mocks.makeEuidCstgOption({ serverPublicKey })),
117+
},
118+
{
119+
name: 'setIdentityFromPhoneHash',
120+
identityType: 'euid',
121+
setInvalidIdentity: () =>
122+
euid.setIdentityFromPhoneHash('+12345678910', mocks.makeEuidCstgOption()),
123+
setIdentity: (serverPublicKey?: string) =>
124+
euid.setIdentityFromPhoneHash(
125+
'kVJ+4ilhrqm3HZDDnCQy4niZknvCoM4MkoVzZrQSdJw=',
126+
mocks.makeEuidCstgOption({ serverPublicKey })
72127
),
73128
},
74129
];
75130

76131
scenarios.forEach((scenario) => {
77132
describe(scenario.name, () => {
78133
beforeEach(() => {
79-
uid2 = new UID2();
80-
uid2.init({});
134+
if (scenario.identityType === 'uid2') {
135+
uid2 = new UID2();
136+
uid2.init({});
137+
uid2OrEuid = uid2;
138+
} else if (scenario.identityType === 'euid') {
139+
euid = new EUID();
140+
euid.init({});
141+
uid2OrEuid = euid;
142+
}
81143
});
82144

83145
describe('When invalid identity is provided', () => {
@@ -107,35 +169,47 @@ describe('Client-side token generation Tests', () => {
107169
});
108170

109171
test('should invoke the callback when token is generated', (done) => {
110-
uid2.callbacks.push((eventType, payload) => {
172+
uid2OrEuid.callbacks.push((eventType, payload) => {
111173
if (eventType === EventType.IdentityUpdated) {
112174
expect(payload.identity).toEqual(cstgToken);
113175
done();
114176
}
115177
});
116-
scenario.setIdentity(serverPublicKey);
178+
scenario.setIdentity(
179+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
180+
);
117181
});
118182

119183
test('should set identity to storage', async () => {
120-
await scenario.setIdentity(serverPublicKey);
121-
expect(mocks.getUid2()).toEqual(cstgToken);
184+
await scenario.setIdentity(
185+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
186+
);
187+
scenario.identityType === 'uid2'
188+
? expect(mocks.getUid2()).toEqual(cstgToken)
189+
: expect(mocks.getEuid()).toEqual(cstgToken);
122190
});
123191

124-
test('UID2 should be in available state', async () => {
125-
await scenario.setIdentity(serverPublicKey);
126-
(expect(uid2) as any).toBeInAvailableState(cstgToken.advertising_token);
192+
test('UID2 or EUID should be in available state', async () => {
193+
await scenario.setIdentity(
194+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
195+
);
196+
(expect(uid2OrEuid) as any).toBeInAvailableState(cstgToken.advertising_token);
127197
});
128198

129199
test('should refresh token when generated token requires a refresh', async () => {
130-
await scenario.setIdentity(serverPublicKey);
200+
await scenario.setIdentity(
201+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
202+
);
131203
const refreshedToken = {
132204
...mocks.makeIdentityV2(),
133205
advertising_token: 'refreshed_token',
134206
};
135207
jest.setSystemTime(refreshFrom);
136208
jest.runOnlyPendingTimers();
137209
xhrMock.sendIdentityInEncodedResponse(refreshedToken, cstgToken.refresh_response_key);
138-
expect(await uid2!.getAdvertisingTokenAsync()).toBe(refreshedToken.advertising_token);
210+
expect(await uid2OrEuid!.getAdvertisingTokenAsync()).toBe(
211+
refreshedToken.advertising_token
212+
);
139213
});
140214
});
141215

@@ -152,16 +226,22 @@ describe('Client-side token generation Tests', () => {
152226
});
153227
});
154228
test('should not set identity', async () => {
155-
await expect(scenario.setIdentity(serverPublicKey)).rejects.toEqual(
156-
'Client error: Here is a client error'
157-
);
158-
expect(mocks.getUid2()).toBeNull();
229+
await expect(
230+
scenario.setIdentity(
231+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
232+
)
233+
).rejects.toEqual('Client error: Here is a client error');
234+
scenario.identityType === 'uid2'
235+
? expect(mocks.getUid2()).toBeNull()
236+
: expect(mocks.getEuid()).toBeNull();
159237
});
160238
test('should be in unavailable state', async () => {
161-
await expect(scenario.setIdentity(serverPublicKey)).rejects.toEqual(
162-
'Client error: Here is a client error'
163-
);
164-
(expect(uid2) as any).toBeInUnavailableState();
239+
await expect(
240+
scenario.setIdentity(
241+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
242+
)
243+
).rejects.toEqual('Client error: Here is a client error');
244+
(expect(uid2OrEuid) as any).toBeInUnavailableState();
165245
});
166246
});
167247

@@ -178,28 +258,34 @@ describe('Client-side token generation Tests', () => {
178258
);
179259
});
180260
});
181-
test('UID2 should be in optout state', async () => {
182-
await scenario.setIdentity(serverPublicKey);
183-
(expect(uid2) as any).toBeInOptoutState();
261+
test('UID2 or EUID should be in optout state', async () => {
262+
await scenario.setIdentity(
263+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
264+
);
265+
(expect(uid2OrEuid) as any).toBeInOptoutState();
184266
});
185267

186268
test('The callback should be called with no identity', (done) => {
187-
uid2.callbacks.push((eventType, payload) => {
269+
uid2OrEuid.callbacks.push((eventType, payload) => {
188270
if (eventType === EventType.IdentityUpdated) {
189271
expect(payload.identity).toBeNull();
190272
done();
191273
}
192274
});
193-
scenario.setIdentity(serverPublicKey);
275+
scenario.setIdentity(
276+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
277+
);
194278
});
195279

196280
test('The callback should be called with an optout event', (done) => {
197-
uid2.callbacks.push((eventType, payload) => {
281+
uid2OrEuid.callbacks.push((eventType, payload) => {
198282
if (eventType === EventType.OptoutReceived) {
199283
done();
200284
}
201285
});
202-
scenario.setIdentity(serverPublicKey);
286+
scenario.setIdentity(
287+
scenario.identityType === 'uid2' ? serverPublicKeyUid2 : serverPublicKeyEuid
288+
);
203289
});
204290
});
205291
});

0 commit comments

Comments
 (0)