|
1 | 1 | import { |
| 2 | + cleanup, |
| 3 | + getBrowserClient, |
2 | 4 | getHeader, |
3 | 5 | getPageValue, |
4 | | - getResponseHeader, |
| 6 | + runTest, |
5 | 7 | saveRule, |
6 | | - startUp, |
7 | 8 | testServer, |
8 | 9 | waitTestServer, |
9 | 10 | } from './utils.mjs'; |
10 | 11 |
|
11 | | -let browser; |
12 | | - |
13 | 12 | beforeAll(async () => { |
14 | | - browser = await startUp('chrome_v3'); |
| 13 | + await Promise.all([ |
| 14 | + getBrowserClient('chrome_v3'), |
| 15 | + getBrowserClient('firefox_v3'), |
| 16 | + ]); |
15 | 17 | console.log('browser ready'); |
16 | 18 | // Check if test server is running |
17 | 19 | await waitTestServer(); |
18 | 20 | console.log('test server ready'); |
19 | 21 | }, 20000); |
20 | 22 |
|
21 | 23 | afterAll(async () => { |
22 | | - if (browser) { |
23 | | - await browser.popup.close(); |
24 | | - await browser.browser.close(); |
25 | | - } |
26 | | -}); |
27 | | - |
28 | | -test('Modify Request Header', async () => { |
29 | | - const key = String(Math.random()).replace('.', ''); |
30 | | - |
31 | | - const { remove } = await saveRule(browser.popup, { |
32 | | - name: 'test modify request header', |
33 | | - ruleType: 'modifySendHeader', |
34 | | - pattern: '^' + testServer, |
35 | | - matchType: 'regexp', |
36 | | - isFunction: false, |
37 | | - enable: true, |
38 | | - action: { |
39 | | - name: 'X-Test-Header', |
40 | | - value: key, |
41 | | - }, |
42 | | - }); |
43 | | - |
44 | | - const header = await getHeader(browser.browser); |
45 | | - |
46 | | - expect(header['X_TEST_HEADER']).toBe(key); |
47 | | - |
48 | | - await remove(); |
49 | | -}); |
50 | | - |
51 | | -test('Disable rule', async () => { |
52 | | - const key = String(Math.random()).replace('.', ''); |
53 | | - |
54 | | - const { remove } = await saveRule(browser.popup, { |
55 | | - name: 'test disable rule', |
56 | | - ruleType: 'modifySendHeader', |
57 | | - pattern: '^' + testServer, |
58 | | - matchType: 'regexp', |
59 | | - isFunction: false, |
60 | | - enable: false, |
61 | | - action: { |
62 | | - name: 'X-Test-Header', |
63 | | - value: key, |
64 | | - }, |
65 | | - }); |
66 | | - |
67 | | - const header = await getHeader(browser.browser); |
68 | | - |
69 | | - expect(header['X_TEST_HEADER']).toBeUndefined(); |
70 | | - |
71 | | - await remove(); |
72 | | -}); |
73 | | - |
74 | | -test('Remove Response Header', async () => { |
75 | | - const { remove } = await saveRule(browser.popup, { |
76 | | - name: 'test remove request header', |
77 | | - ruleType: 'modifyReceiveHeader', |
78 | | - pattern: '^' + testServer, |
79 | | - matchType: 'regexp', |
80 | | - isFunction: false, |
81 | | - enable: true, |
82 | | - action: { |
83 | | - name: 'content-security-policy', |
84 | | - value: '_header_editor_remove_', |
85 | | - }, |
86 | | - }); |
87 | | - |
88 | | - const value = await getPageValue(browser.browser, 'csp.php'); |
89 | | - |
90 | | - expect(value).toBe('Executed'); |
91 | | - |
92 | | - await remove(); |
| 24 | + await cleanup(); |
93 | 25 | }); |
94 | 26 |
|
95 | | -test('Modify Response Header', async () => { |
96 | | - const key = String(Math.random()).replace('.', ''); |
97 | | - |
98 | | - const { remove } = await saveRule(browser.popup, { |
99 | | - name: 'test modify request header', |
100 | | - ruleType: 'modifyReceiveHeader', |
101 | | - pattern: '^' + testServer, |
102 | | - matchType: 'regexp', |
103 | | - isFunction: false, |
104 | | - enable: true, |
105 | | - action: { |
106 | | - name: 'content-security-policy', |
107 | | - value: `script-src 'self' 'nonce-${key}'`, |
108 | | - }, |
109 | | - }); |
110 | | - |
111 | | - const value = await getPageValue(browser.browser, 'csp.php?nonce=' + key); |
112 | | - |
113 | | - expect(value).toBe(key); |
114 | | - |
115 | | - await remove(); |
116 | | -}); |
| 27 | +test('Modify Request Header', async () => |
| 28 | + runTest(['chrome_v3', 'firefox_v3'], async browser => { |
| 29 | + const key = String(Math.random()).replace('.', ''); |
| 30 | + |
| 31 | + const { remove } = await saveRule(browser.popup, { |
| 32 | + name: 'test modify request header', |
| 33 | + ruleType: 'modifySendHeader', |
| 34 | + pattern: '^' + testServer, |
| 35 | + matchType: 'regexp', |
| 36 | + isFunction: false, |
| 37 | + enable: true, |
| 38 | + action: { |
| 39 | + name: 'X-Test-Header', |
| 40 | + value: key, |
| 41 | + }, |
| 42 | + }); |
| 43 | + |
| 44 | + const header = await getHeader(browser.browser); |
| 45 | + |
| 46 | + expect(header['X_TEST_HEADER']).toBe(key); |
| 47 | + |
| 48 | + await remove(); |
| 49 | + })); |
| 50 | + |
| 51 | +test('Disable rule', async () => |
| 52 | + runTest(['chrome_v3', 'firefox_v3'], async browser => { |
| 53 | + const key = String(Math.random()).replace('.', ''); |
| 54 | + |
| 55 | + const { remove } = await saveRule(browser.popup, { |
| 56 | + name: 'test disable rule', |
| 57 | + ruleType: 'modifySendHeader', |
| 58 | + pattern: '^' + testServer, |
| 59 | + matchType: 'regexp', |
| 60 | + isFunction: false, |
| 61 | + enable: false, |
| 62 | + action: { |
| 63 | + name: 'X-Test-Header', |
| 64 | + value: key, |
| 65 | + }, |
| 66 | + }); |
| 67 | + |
| 68 | + const header = await getHeader(browser.browser); |
| 69 | + |
| 70 | + expect(header['X_TEST_HEADER']).toBeUndefined(); |
| 71 | + |
| 72 | + await remove(); |
| 73 | + })); |
| 74 | + |
| 75 | +test('Remove Response Header', async () => |
| 76 | + runTest(['chrome_v3', 'firefox_v3'], async browser => { |
| 77 | + const { remove } = await saveRule(browser.popup, { |
| 78 | + name: 'test remove request header', |
| 79 | + ruleType: 'modifyReceiveHeader', |
| 80 | + pattern: '^' + testServer, |
| 81 | + matchType: 'regexp', |
| 82 | + isFunction: false, |
| 83 | + enable: true, |
| 84 | + action: { |
| 85 | + name: 'content-security-policy', |
| 86 | + value: '_header_editor_remove_', |
| 87 | + }, |
| 88 | + }); |
| 89 | + |
| 90 | + const value = await getPageValue(browser.browser, 'csp.php'); |
| 91 | + |
| 92 | + expect(value).toBe('Executed'); |
| 93 | + |
| 94 | + await remove(); |
| 95 | + })); |
| 96 | + |
| 97 | +test('Modify Response Header', async () => |
| 98 | + runTest(['chrome_v3', 'firefox_v3'], async browser => { |
| 99 | + const key = String(Math.random()).replace('.', ''); |
| 100 | + |
| 101 | + const { remove } = await saveRule(browser.popup, { |
| 102 | + name: 'test modify request header', |
| 103 | + ruleType: 'modifyReceiveHeader', |
| 104 | + pattern: '^' + testServer, |
| 105 | + matchType: 'regexp', |
| 106 | + isFunction: false, |
| 107 | + enable: true, |
| 108 | + action: { |
| 109 | + name: 'content-security-policy', |
| 110 | + value: `script-src 'self' 'nonce-${key}'`, |
| 111 | + }, |
| 112 | + }); |
| 113 | + |
| 114 | + const value = await getPageValue(browser.browser, 'csp.php?nonce=' + key); |
| 115 | + |
| 116 | + expect(value).toBe(key); |
| 117 | + |
| 118 | + await remove(); |
| 119 | + })); |
0 commit comments