1/**
2 * Copyright 2017 Google Inc. All rights reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16import expect from 'expect';
17import {
18  expectCookieEquals,
19  getTestState,
20  setupTestBrowserHooks,
21  setupTestPageAndContextHooks,
22  itFailsFirefox,
23} from './mocha-utils'; // eslint-disable-line import/extensions
24
25describe('DefaultBrowserContext', function () {
26  setupTestBrowserHooks();
27  setupTestPageAndContextHooks();
28  it('page.cookies() should work', async () => {
29    const { page, server } = getTestState();
30
31    await page.goto(server.EMPTY_PAGE);
32    await page.evaluate(() => {
33      document.cookie = 'username=John Doe';
34    });
35    expectCookieEquals(await page.cookies(), [
36      {
37        name: 'username',
38        value: 'John Doe',
39        domain: 'localhost',
40        path: '/',
41        sameParty: false,
42        expires: -1,
43        size: 16,
44        httpOnly: false,
45        secure: false,
46        session: true,
47        sourcePort: 8907,
48        sourceScheme: 'NonSecure',
49      },
50    ]);
51  });
52  it('page.setCookie() should work', async () => {
53    const { page, server } = getTestState();
54
55    await page.goto(server.EMPTY_PAGE);
56    await page.setCookie({
57      name: 'username',
58      value: 'John Doe',
59    });
60    expect(await page.evaluate(() => document.cookie)).toBe(
61      'username=John Doe'
62    );
63    expectCookieEquals(await page.cookies(), [
64      {
65        name: 'username',
66        value: 'John Doe',
67        domain: 'localhost',
68        path: '/',
69        sameParty: false,
70        expires: -1,
71        size: 16,
72        httpOnly: false,
73        secure: false,
74        session: true,
75        sourcePort: 80,
76        sourceScheme: 'NonSecure',
77      },
78    ]);
79  });
80  it('page.deleteCookie() should work', async () => {
81    const { page, server } = getTestState();
82
83    await page.goto(server.EMPTY_PAGE);
84    await page.setCookie(
85      {
86        name: 'cookie1',
87        value: '1',
88      },
89      {
90        name: 'cookie2',
91        value: '2',
92      }
93    );
94    expect(await page.evaluate('document.cookie')).toBe('cookie1=1; cookie2=2');
95    await page.deleteCookie({ name: 'cookie2' });
96    expect(await page.evaluate('document.cookie')).toBe('cookie1=1');
97    expectCookieEquals(await page.cookies(), [
98      {
99        name: 'cookie1',
100        value: '1',
101        domain: 'localhost',
102        path: '/',
103        sameParty: false,
104        expires: -1,
105        size: 8,
106        httpOnly: false,
107        secure: false,
108        session: true,
109        sourcePort: 80,
110        sourceScheme: 'NonSecure',
111      },
112    ]);
113  });
114});
115