tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

urlencoded2.window.js (3854B)


      1 // META: script=enctypes-helper.js
      2 
      3 const formTest = formSubmissionTemplate("application/x-www-form-urlencoded");
      4 
      5 formTest({
      6  name: "basic",
      7  value: "test",
      8  expected: "basic=test",
      9  description: "Basic test",
     10 });
     11 
     12 formTest({
     13  name: "basic",
     14  value: new File([], "file-test.txt"),
     15  expected: "basic=file-test.txt",
     16  description: "Basic File test",
     17 });
     18 
     19 formTest({
     20  name: "a\0b",
     21  value: "c",
     22  expected: "a%00b=c",
     23  description: "0x00 in name",
     24 });
     25 
     26 formTest({
     27  name: "a",
     28  value: "b\0c",
     29  expected: "a=b%00c",
     30  description: "0x00 in value",
     31 });
     32 
     33 formTest({
     34  name: "a",
     35  value: new File([], "b\0c"),
     36  expected: "a=b%00c",
     37  description: "0x00 in filename",
     38 });
     39 
     40 formTest({
     41  name: "a\nb",
     42  value: "c",
     43  expected: "a%0D%0Ab=c",
     44  description: "\\n in name",
     45 });
     46 
     47 formTest({
     48  name: "a\rb",
     49  value: "c",
     50  expected: "a%0D%0Ab=c",
     51  description: "\\r in name",
     52 });
     53 
     54 formTest({
     55  name: "a\r\nb",
     56  value: "c",
     57  expected: "a%0D%0Ab=c",
     58  description: "\\r\\n in name",
     59 });
     60 
     61 formTest({
     62  name: "a\n\rb",
     63  value: "c",
     64  expected: "a%0D%0A%0D%0Ab=c",
     65  description: "\\n\\r in name",
     66 });
     67 
     68 formTest({
     69  name: "a",
     70  value: "b\nc",
     71  expected: "a=b%0D%0Ac",
     72  description: "\\n in value",
     73 });
     74 
     75 formTest({
     76  name: "a",
     77  value: "b\rc",
     78  expected: "a=b%0D%0Ac",
     79  description: "\\r in value",
     80 });
     81 
     82 formTest({
     83  name: "a",
     84  value: "b\r\nc",
     85  expected: "a=b%0D%0Ac",
     86  description: "\\r\\n in value",
     87 });
     88 
     89 formTest({
     90  name: "a",
     91  value: "b\n\rc",
     92  expected: "a=b%0D%0A%0D%0Ac",
     93  description: "\\n\\r in value",
     94 });
     95 
     96 formTest({
     97  name: "a",
     98  value: new File([], "b\nc"),
     99  expected: "a=b%0D%0Ac",
    100  description: "\\n in filename",
    101 });
    102 
    103 formTest({
    104  name: "a",
    105  value: new File([], "b\rc"),
    106  expected: "a=b%0D%0Ac",
    107  description: "\\r in filename",
    108 });
    109 
    110 formTest({
    111  name: "a",
    112  value: new File([], "b\r\nc"),
    113  expected: "a=b%0D%0Ac",
    114  description: "\\r\\n in filename",
    115 });
    116 
    117 formTest({
    118  name: "a",
    119  value: new File([], "b\n\rc"),
    120  expected: "a=b%0D%0A%0D%0Ac",
    121  description: "\\n\\r in filename",
    122 });
    123 
    124 formTest({
    125  name: 'a"b',
    126  value: "c",
    127  expected: "a%22b=c",
    128  description: "double quote in name",
    129 });
    130 
    131 formTest({
    132  name: "a",
    133  value: 'b"c',
    134  expected: "a=b%22c",
    135  description: "double quote in value",
    136 });
    137 
    138 formTest({
    139  name: "a",
    140  value: new File([], 'b"c'),
    141  expected: "a=b%22c",
    142  description: "double quote in filename",
    143 });
    144 
    145 formTest({
    146  name: "a'b",
    147  value: "c",
    148  expected: "a%27b=c",
    149  description: "single quote in name",
    150 });
    151 
    152 formTest({
    153  name: "a",
    154  value: "b'c",
    155  expected: "a=b%27c",
    156  description: "single quote in value",
    157 });
    158 
    159 formTest({
    160  name: "a",
    161  value: new File([], "b'c"),
    162  expected: "a=b%27c",
    163  description: "single quote in filename",
    164 });
    165 
    166 formTest({
    167  name: "a\\b",
    168  value: "c",
    169  expected: "a%5Cb=c",
    170  description: "backslash in name",
    171 });
    172 
    173 formTest({
    174  name: "a",
    175  value: "b\\c",
    176  expected: "a=b%5Cc",
    177  description: "backslash in value",
    178 });
    179 
    180 formTest({
    181  name: "a",
    182  value: new File([], "b\\c"),
    183  expected: "a=b%5Cc",
    184  description: "backslash in filename",
    185 });
    186 
    187 formTest({
    188  name: "áb",
    189  value: "ç",
    190  expected: "%C3%A1b=%C3%A7",
    191  description: "non-ASCII in name and value",
    192 });
    193 
    194 formTest({
    195  name: "a",
    196  value: new File([], "ə.txt"),
    197  expected: "a=%C9%99.txt",
    198  description: "non-ASCII in filename",
    199 });
    200 
    201 formTest({
    202  name: "aəb",
    203  value: "c\uFFFDd",
    204  formEncoding: "windows-1252",
    205  expected: "a%26%23601%3Bb=c%26%2365533%3Bd",
    206  description: "characters not in encoding in name and value",
    207 });
    208 
    209 formTest({
    210  name: "á",
    211  value: new File([], "💩"),
    212  formEncoding: "windows-1252",
    213  expected: "%E1=%26%23128169%3B",
    214  description: "character not in encoding in filename",
    215 });
    216 
    217 formTest({
    218  name: "\uD800",
    219  value: "\uD800",
    220  formEncoding: "windows-1252",
    221  expected: "%26%2365533%3B=%26%2365533%3B",
    222  description: "lone surrogate in name and value",
    223 });