Skip to content

Commit 4c6d6ce

Browse files
committed
test: add custom function tests
1 parent 41ee3ed commit 4c6d6ce

3 files changed

Lines changed: 47 additions & 8 deletions

File tree

tests/e2e/browser.spec.mjs

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ test.each([['edge_v2'], ['chrome_v3'], ['firefox_v2']])(
195195
'[%s] - Modify Response',
196196
async browserKey =>
197197
runTest(browserKey, async browser => {
198-
const key = String(Math.random()).replace('.', '');
198+
const key1 = String(Math.random()).replace('.', '');
199+
const key2 = String(Math.random()).replace('.', '');
199200

200201
await callBackgroundApi(browser.popup, {
201202
method: 'set_pref',
@@ -213,19 +214,57 @@ test.each([['edge_v2'], ['chrome_v3'], ['firefox_v2']])(
213214
},
214215
body: {
215216
stage: 'Response',
216-
value: `document.getElementById("value").value='${key}';`,
217+
value: `document.getElementById("value").value='${key1}';`,
217218
},
218219
encoding: 'UTF-8',
219220
});
220221

221222
const value1 = await getPageValue(browser.browser, 'js-src.php');
222-
expect(value1).toBe(key);
223+
expect(value1).toBe(key1);
223224

224225
const value2 = await getPageValue(
225226
browser.browser,
226-
`js-src.php?value=${key}`,
227+
`js-src.php?value=${key2}`,
228+
);
229+
expect(value2).toBe(key2);
230+
231+
await remove();
232+
}),
233+
);
234+
235+
test.each([['edge_v2'], ['firefox_v2']])(
236+
'[%s] - Modify Response - Custom Function',
237+
async browserKey =>
238+
runTest(browserKey, async browser => {
239+
const key1 = String(Math.random()).replace('.', '');
240+
const key2 = String(Math.random()).replace('.', '');
241+
242+
await callBackgroundApi(browser.popup, {
243+
method: 'set_pref',
244+
key: 'modify-body',
245+
value: true,
246+
});
247+
248+
const { remove } = await saveRule(browser.popup, {
249+
enable: true,
250+
ruleType: 'modifyReceiveBody',
251+
isFunction: true,
252+
name: 'test modify response with custom function',
253+
condition: {
254+
urlPrefix: `${testServer}mock-js.php`,
255+
},
256+
body: {
257+
stage: 'Response',
258+
},
259+
code: `return val.replace(/'(.*?)'/, '"${key1}$1${key1}$1"');`,
260+
encoding: 'UTF-8',
261+
});
262+
263+
const value = await getPageValue(
264+
browser.browser,
265+
`js-src.php?value=${key2}`,
227266
);
228-
expect(value2).toBe(JSON.stringify({ value: key }));
267+
expect(value).toBe(`${key1}${key2}${key1}${key2}`);
229268

230269
await remove();
231270
}),

tests/simple-server/js-src.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?php
22
$url = 'mock-js.php';
3-
if (!empty($_SERVER['QUERY_STRING'])) {
4-
$url .= '?' . $_SERVER['QUERY_STRING'];
3+
if (!empty($_GET['value'])) {
4+
$url .= '?value=' . $_GET['value'];
55
}
66
?>
77
<html>

tests/simple-server/mock-js.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?php
22
header('Content-Type: application/javascript');
33

4-
echo 'document.getElementById("value").value = \'', json_encode($_GET), '\';';
4+
echo 'document.getElementById("value").value=\'', isset($_GET['value']) ? $_GET['value'] : 'empty', '\';';

0 commit comments

Comments
 (0)