1 | /*
|
2 | * Copyright (c) 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
|
3 | * All rights reserved.
|
4 | *
|
5 | * Redistribution and use in source and binary forms, with or without
|
6 | * modification, are permitted provided that the following conditions are met:
|
7 | *
|
8 | * 1. Redistributions of source code must retain the above copyright notice, this
|
9 | * list of conditions and the following disclaimer.
|
10 | *
|
11 | * 2. Redistributions in binary form must reproduce the above copyright notice,
|
12 | * this list of conditions and the following disclaimer in the documentation
|
13 | * and/or other materials provided with the distribution.
|
14 | *
|
15 | * 3. Neither the name of the copyright holder nor the names of its
|
16 | * contributors may be used to endorse or promote products derived from
|
17 | * this software without specific prior written permission.
|
18 | *
|
19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
22 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
23 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
25 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
26 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
27 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
28 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29 | */
|
30 |
|
31 | describe('Tracker created domain cookies', () => {
|
32 | it('contain the expected cookie names', async () => {
|
33 | await browser.url('/cookies.html');
|
34 | await browser.waitUntil(async () => (await $('#init').getText()) === 'true', {
|
35 | timeout: 5000,
|
36 | timeoutMsg: 'expected init after 5s',
|
37 | interval: 250,
|
38 | });
|
39 |
|
40 | await browser.waitUntil(async () => (await $('#cookies').getText()) !== '', {
|
41 | timeout: 5000,
|
42 | timeoutMsg: 'expected cookie to be set after 5s',
|
43 | interval: 250,
|
44 | });
|
45 |
|
46 | const cookies = await $('#cookies').getText();
|
47 |
|
48 | expect(cookies).not.toContain('_sp_0ses.'); // Missing as tests are not HTTPS and `cookieSecure: true` by default
|
49 | expect(cookies).not.toContain('_sp_0id.');
|
50 | expect(cookies).not.toContain('_sp_3ses.'); // Missing as cookie lifetime is too short (1)
|
51 | expect(cookies).not.toContain('_sp_3id.');
|
52 | expect(cookies).not.toContain('_sp_4ses.'); // Missing as anonymous tracking enabled
|
53 | expect(cookies).not.toContain('_sp_4id.');
|
54 | expect(cookies).not.toContain('_sp_5ses.'); // Missing as only using local storage
|
55 | expect(cookies).not.toContain('_sp_5id.');
|
56 | expect(cookies).not.toContain('_sp_7ses.'); // Can't set a cookie for another domain
|
57 | expect(cookies).not.toContain('_sp_7id.');
|
58 |
|
59 | expect(cookies).toContain('_sp_1ses.');
|
60 | expect(cookies).toContain('_sp_1id.');
|
61 | expect(cookies).toContain('_sp_2ses.');
|
62 | expect(cookies).toContain('_sp_2id.');
|
63 | expect(cookies).toContain('_sp_6ses.');
|
64 | expect(cookies).toContain('_sp_6id.');
|
65 |
|
66 | expect(await $('#getDomainUserId').getText()).toMatch(
|
67 | /\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/i
|
68 | );
|
69 | expect(await $('#getDomainUserInfo').getText()).toMatch(
|
70 | /\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b.[0-9]+.[0-9].[0-9]+.[0-9]+.\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/i
|
71 | );
|
72 | expect(await $('#getUserId').getText()).toBe('Dave');
|
73 | expect(await $('#getCookieName').getText()).toMatch(/_sp_1id.[0-9a-z]{4}/i);
|
74 | expect(await $('#getPageViewId').getText()).toMatch(
|
75 | /\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/i
|
76 | );
|
77 | });
|
78 | });
|