regression-tests.action 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114
  1. #############################################################################
  2. #
  3. # This is a configuration file for Privoxy-Regression-Test
  4. # (included in the source tarball's tools directory).
  5. #
  6. # After referencing it in your Privoxy configuration both Privoxy and
  7. # Privoxy-Regression-Test should be good to go.
  8. #
  9. #############################################################################
  10. #
  11. # Copyright (c) 2007-2020 Fabian Keil <fk@fabiankeil.de>
  12. #
  13. # Permission to use, copy, modify, and distribute this software for any
  14. # purpose with or without fee is hereby granted, provided that the above
  15. # copyright notice and this permission notice appear in all copies.
  16. #
  17. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  18. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  19. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  20. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  21. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  22. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  23. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  24. #
  25. #############################################################################
  26. {{settings}}
  27. for-privoxy-version=3.0.27
  28. # Some dependencies Privoxy-Regression-Test should know about:
  29. #
  30. # Level 9 needs = config line user-manual\s+(\.?\.?/|[A-Za-z]:)
  31. # Level 12 needs = feature status FEATURE_CGI_EDIT_ACTIONS Yes
  32. # Level 12 needs = config line enable-edit-actions\s+1
  33. # Level 13 needs = feature status FEATURE_CONNECTION_KEEP_ALIVE Yes
  34. # Level 13 needs = config line keep-alive-timeout\s+(2[1-9]+|[3-9]\d+|1\d{2,})
  35. # Level 14 needs = feature status FEATURE_CONNECTION_KEEP_ALIVE No
  36. # Level 15 needs = config line connection-sharing\s+0
  37. # Level 16 needs = feature status FEATURE_CONNECTION_KEEP_ALIVE Yes
  38. # Level 16 needs = config line connection-sharing\s+1
  39. # Level 17 needs = feature status FEATURE_64_BIT_TIME_T Yes
  40. # Level 18 needs = feature status FEATURE_GRACEFUL_TERMINATION No
  41. # Level 19 needs = feature status FEATURE_GRACEFUL_TERMINATION Yes
  42. # Level 20 needs = config line enable-remote-toggle\s+1
  43. # Level 21 needs = config line enable-remote-toggle\s+0
  44. # Level 22 needs = config line enable-proxy-authentication-forwarding\s+0
  45. # Level 23 needs = config line enable-proxy-authentication-forwarding\s+1
  46. # Level 24 needs = feature status FEATURE_CLIENT_TAGS Yes
  47. # Level 25 needs = feature status FEATURE_HTTPS_INSPECTION No
  48. #######################################################
  49. # Enable taggers to activate the tests on demand
  50. # and suppress hiding the User-Agent for
  51. # Privoxy-Regression-Test to save log space.
  52. #######################################################
  53. {\
  54. +client-header-tagger{user-agent} \
  55. +client-header-tagger{privoxy-control} \
  56. +client-header-filter{privoxy-control} \
  57. }
  58. config.privoxy.org/
  59. p.p/
  60. 127.0.0.1/
  61. {-hide-user-agent}
  62. TAG:^User-Agent: Privoxy-Regression-Test
  63. #######################################################
  64. # Test accept-language{}.
  65. #######################################################
  66. {+hide-accept-language{en-gb}}
  67. # Set Header = Accept-Language: de-de
  68. # Expect Header = Accept-Language: en-gb
  69. TAG:^hide-accept-language\{en-gb\}$
  70. {+hide-accept-language{block}}
  71. # Set Header = Accept-Language: de-de
  72. # Expect Header = REMOVAL
  73. TAG:^hide-accept-language\{block\}$
  74. #######################################################
  75. # Sections for hide-referrer{} to test:
  76. #
  77. # 1) conditional-block
  78. # 2) conditional-forge
  79. # 3) forge
  80. # 4) block
  81. # 5) a parameter that looks like a valid fake referrer
  82. # 6) a parameter that looks like an invalid fake referrer
  83. #######################################################
  84. {+hide-referrer{conditional-block}}
  85. # Set Header = Referer: http://www.example.org/foo
  86. # Expect Header = REMOVAL
  87. #
  88. # Set Header = Referer: http://p.p/foo
  89. # Expect Header = NO CHANGE
  90. #
  91. # Set Header = Referer: p.p/
  92. # Expect Header = REMOVAL
  93. #
  94. # Set Header = Referer: p
  95. # Expect Header = REMOVAL
  96. #
  97. # Set Header = Referer: http://
  98. # Expect Header = REMOVAL
  99. #
  100. # Set Header = Referer: https://p.p/
  101. # Expect Header = REMOVAL
  102. TAG:^hide-referrer\{conditional-block\}$
  103. {+hide-referrer{conditional-forge}}
  104. # Set Header = Referer: http://www.example.org/foo
  105. # Expect Header = Referer: http://p.p/
  106. #
  107. # Set Header = Referer: http://p.p/foo
  108. # Expect Header = NO CHANGE
  109. #
  110. # Set Header = Referer: p.p/
  111. # Expect Header = Referer: http://p.p/
  112. #
  113. # Set Header = Referer: p
  114. # Expect Header = Referer: http://p.p/
  115. #
  116. # Set Header = Referer: http://
  117. # Expect Header = Referer: http://p.p/
  118. #
  119. # Set Header = Referer: https://p.p/
  120. # Expect Header = Referer: http://p.p/
  121. TAG:^hide-referrer\{conditional-forge\}$
  122. {+hide-referrer{forge}}
  123. # Set Header = Referer: http://www.example.org/foo
  124. # Expect Header = Referer: http://p.p/
  125. TAG:^hide-referrer\{forge\}$
  126. {+hide-referrer{block}}
  127. # Set Header = Referer: http://www.example.org/foo
  128. # Expect Header = REMOVAL
  129. TAG:^hide-referrer\{block\}$
  130. {+hide-referrer{invalid}}
  131. # Set Header = Referer: http://www.example.org/foo
  132. # Expect Header = Referer: invalid
  133. TAG:^hide-referrer\{invalid\}$
  134. {+hide-referrer{http://www.privoxy.org/}}
  135. # Set Header = Referer: http://www.example.org/asdf
  136. # Expect Header = Referer: http://www.privoxy.org/
  137. TAG:^hide-referrer\{http://www.privoxy.org/\}$
  138. #{+hide-referrer{}}
  139. #TAG:^hide-referrer\{\}$
  140. #######################################################
  141. # Test hide-user-agent{}.
  142. #######################################################
  143. {+hide-user-agent{Mozilla/5.0 (X11; U; FreeBSD alpha; en-GB; rv:1.8.1.6) Gecko/20070913 Firefox/2.0.0.6}}
  144. # Set Header = User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; de-CH; rv:1.8.1.6) Gecko/20070806 Firefox/2.0.0.6
  145. # Expect Header = User-Agent: Mozilla/5.0 (X11; U; FreeBSD alpha; en-GB; rv:1.8.1.6) Gecko/20070913 Firefox/2.0.0.6
  146. TAG:^hide-user-agent\{Mozilla/5\.0 \(X11; U; FreeBSD alpha; en-GB; rv:1\.8\.1\.6\) Gecko/20070913 Firefox/2\.0\.0\.6\}$
  147. {+hide-user-agent{block}}
  148. # XXX: Check the code that is tested here.
  149. # Set Header = ua-blah: blah
  150. # Expect Header = REMOVAL
  151. TAG:^hide-user-agent{block}$
  152. {-hide-user-agent{}}
  153. # Set Header = ua-blah: blah
  154. # Expect Header = NO CHANGE
  155. TAG:^-hide-user-agent{block}$
  156. #######################################################
  157. # Test add-header{}.
  158. #######################################################
  159. {+add-header{X-Custom-Header: yes, please}}
  160. # Set Header = X-Whatever: foo
  161. # Expect Header = X-Custom-Header: yes, please
  162. TAG:^add-header\{X-Custom-Header: yes, please\}$
  163. #######################################################
  164. # Test client-header-filter{hide-tor-exit-notation}.
  165. #######################################################
  166. {+client-header-filter{hide-tor-exit-notation} -hide-referer}
  167. # Set Header = Referer: http://p.p.zwiebelsuppe.exit/
  168. # Expect Header = Referer: http://p.p/
  169. #
  170. # Set Header = Referer: http://p.p.zwiebelsuppe.exit/foo/bar/baaz/
  171. # Expect Header = Referer: http://p.p/foo/bar/baaz/
  172. #
  173. # Set Header = Referer: http://p.p/
  174. # Expect Header = NO CHANGE
  175. #
  176. # Set Header = Referer: http://config.privoxy.org.zwiebelsuppe.exit/foo/bar/baaz.html
  177. # Expect Header = Referer: http://config.privoxy.org/foo/bar/baaz.html
  178. #
  179. # Set Header = Host: p.p.zwiebelsuppe.exit
  180. # Expect Header = Host: p.p
  181. #
  182. # Set Header = Host: p.p
  183. # Expect Header = NO CHANGE
  184. #
  185. # Set Header = Referer: http://config.privoxy.org.ad356ef8e87a89e6c898b74500d58607ac691178.exit/foo/baaz.html
  186. # Expect Header = Referer: http://config.privoxy.org/foo/baaz.html
  187. TAG:^client-header-filter\{hide-tor-exit-notation\}$
  188. #######################################################
  189. # Test client-header-filter{no-brotli-accepted}.
  190. #######################################################
  191. {+client-header-filter{no-brotli-accepted}}
  192. # Set Header = Accept-Encoding: gzip, deflate, br
  193. # Expect Header = Accept-Encoding: gzip, deflate
  194. #
  195. # Set Header = Accept-Encoding: gzip, br, deflate
  196. # Expect Header = Accept-Encoding: gzip, deflate
  197. #
  198. # Set Header = Accept-Encoding: br, gzip, deflate
  199. # Expect Header = Accept-Encoding: gzip, deflate
  200. #
  201. # Set Header = Accept-Encoding: br
  202. # Expect Header = Accept-Encoding:
  203. #
  204. # Set Header = Accept-Encoding: gzip, deflate
  205. # Expect Header = NO CHANGE
  206. #
  207. TAG:^client-header-filter\{no-brotli-accepted\}$
  208. #######################################################
  209. # Test crunch-client-header{}.
  210. #######################################################
  211. {+crunch-client-header{text/html}}
  212. # Set Header = Content-Type: text/html
  213. # Expect Header = REMOVAL
  214. #
  215. # Set Header = Content-Type: text/html; charset=4711
  216. # Expect Header = REMOVAL
  217. #
  218. # Set Header = Content-Type: text/plain
  219. # Expect Header = NO CHANGE
  220. TAG:^crunch-client-header\{text/plain\}$
  221. #######################################################
  222. # Test crunch-if-none-match.
  223. #######################################################
  224. {+crunch-if-none-match -hide-if-modified-since}
  225. # Set Header = If-None-Match: 8987afd239d2093kd2309kd
  226. # Expect Header = REMOVAL
  227. #
  228. # Set Header = If-None-Match: 82c3cb50c984ef11b1fed749949b2a16
  229. # Expect Header = REMOVAL
  230. #
  231. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  232. # Expect Header = NO CHANGE
  233. TAG:^crunch-if-none-match$
  234. #######################################################
  235. # Test hide-if-modified-since
  236. #######################################################
  237. {+hide-if-modified-since{block} -crunch-if-none-match}
  238. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  239. # Expect Header = REMOVAL
  240. #
  241. # Set Header = If-None-Match: 82c3cb50c984ef11b1fed749949b2a16
  242. # Expect Header = NO CHANGE
  243. TAG:^hide-if-modified-since\{block\}$
  244. {+hide-if-modified-since{-60} -crunch-if-none-match}
  245. # Set Header = If-Modified-Since: Gee, this date is invalid
  246. # Expect Header = REMOVAL
  247. #
  248. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  249. # Expect Header = SOME CHANGE
  250. # Set Header = If-Modified-Since: Thu, 04-Oct-07 09:56:35 GMT
  251. # Expect Header = SOME CHANGE
  252. # Set Header = If-Modified-Since: Thursday, 04-Oct-2007 09:56:35 GMT
  253. # Expect Header = SOME CHANGE
  254. # Set Header = If-Modified-Since: Thu, 04-Oct-2007 09:56:35 GMT
  255. # Expect Header = SOME CHANGE
  256. # Set Header = If-Modified-Since: Thursday Oct 04 09:56:35 2007 GMT
  257. # Expect Header = SOME CHANGE
  258. #
  259. # Set Header = If-Modified-Since: Thu, 1 Jan 1970 00:00:00 GMT
  260. # Expect Header = SOME CHANGE
  261. # Level = 17
  262. # Set Header = If-Modified-Since: Thu, 01-Jan-70 00:00:00 GMT
  263. # Expect Header = SOME CHANGE
  264. # Level = 17
  265. # Set Header = If-Modified-Since: Thursday, 01-Jan-1970 00:00:00 GMT
  266. # Expect Header = SOME CHANGE
  267. # Level = 17
  268. # Set Header = If-Modified-Since: Thu, 01-Jan-1970 00:00:00 GMT
  269. # Expect Header = SOME CHANGE
  270. # Level = 17
  271. # Set Header = If-Modified-Since: Thursday Jan 01 00:00:00 1970 GMT
  272. # Expect Header = SOME CHANGE
  273. # Level = 17
  274. #
  275. # Set Header = If-Modified-Since: Thu, 1 Jan 123456789 00:00:00 GMT
  276. # Expect Header = REMOVAL
  277. # Set Header = If-Modified-Since: Thu, 01-Jan-123456789 00:00:00 GMT
  278. # Expect Header = REMOVAL
  279. # Set Header = If-Modified-Since: Thursday, 01-Jan-123456789 00:00:00 GMT
  280. # Expect Header = REMOVAL
  281. # Set Header = If-Modified-Since: Thu, 01-Jan-123456789 00:00:00 GMT
  282. # Expect Header = REMOVAL
  283. # Set Header = If-Modified-Since: Thursday Jan 01 00:00:00 123456789 GMT
  284. # Expect Header = REMOVAL
  285. #
  286. # Set Header = If-Modified-Since: Mon, 1 Jan 2525 00:00:00 GMT
  287. # Expect Header = SOME CHANGE
  288. # Level = 17
  289. # Set Header = If-Modified-Since: Mon, 01-Jan-25 00:00:00 GMT
  290. # Expect Header = SOME CHANGE
  291. # Level = 17
  292. # Set Header = If-Modified-Since: Monday, 01-Jan-2525 00:00:00 GMT
  293. # Expect Header = SOME CHANGE
  294. # Level = 17
  295. # Set Header = If-Modified-Since: Mon, 01-Jan-2525 00:00:00 GMT
  296. # Expect Header = SOME CHANGE
  297. # Level = 17
  298. # Set Header = If-Modified-Since: Monday Jan 01 00:00:00 2525 GMT
  299. # Expect Header = SOME CHANGE
  300. # Level = 17
  301. #
  302. # Set Header = If-Modified-Since: Thu, 1 Jan 1970 02:00:00 GMT
  303. # Expect Header = SOME CHANGE
  304. # Set Header = If-Modified-Since: Thu, 01-Jan-70 02:00:00 GMT
  305. # Expect Header = SOME CHANGE
  306. # Set Header = If-Modified-Since: Thursday, 01-Jan-1970 02:00:00 GMT
  307. # Expect Header = SOME CHANGE
  308. # Set Header = If-Modified-Since: Thu, 01-Jan-1970 02:00:00 GMT
  309. # Expect Header = SOME CHANGE
  310. # Set Header = If-Modified-Since: Thursday Jan 01 02:00:00 1970 GMT
  311. # Expect Header = SOME CHANGE
  312. TAG:^hide-if-modified-since\{-60\}$
  313. {+hide-if-modified-since{+60} -crunch-if-none-match}
  314. # Set Header = If-Modified-Since: Gee, this date is invalid
  315. # Expect Header = REMOVAL
  316. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  317. # Expect Header = SOME CHANGE
  318. # Set Header = If-Modified-Since: Wed, 31 Dec 1969 23:59:59 GMT
  319. # Expect Header = SOME CHANGE
  320. # Level = 17
  321. TAG:^hide-if-modified-since\{\+60\}$
  322. {+hide-if-modified-since{60} -crunch-if-none-match}
  323. # Set Header = If-Modified-Since: Gee, this date is invalid
  324. # Expect Header = REMOVAL
  325. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  326. # Expect Header = SOME CHANGE
  327. TAG:^hide-if-modified-since\{60\}$
  328. {+hide-if-modified-since{+0} -crunch-if-none-match}
  329. # Set Header = If-Modified-Since: Gee, this date is invalid
  330. # Expect Header = REMOVAL
  331. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  332. # Expect Header = NO CHANGE
  333. TAG:^hide-if-modified-since\{\+0\}$
  334. {+hide-if-modified-since{-0} -crunch-if-none-match}
  335. # Set Header = If-Modified-Since: Gee, this date is invalid
  336. # Expect Header = REMOVAL
  337. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  338. # Expect Header = NO CHANGE
  339. TAG:^hide-if-modified-since\{-0\}$
  340. {+hide-if-modified-since{0} -crunch-if-none-match}
  341. # Set Header = If-Modified-Since: Gee, this date is invalid
  342. # Expect Header = REMOVAL
  343. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  344. # Expect Header = NO CHANGE
  345. TAG:^hide-if-modified-since\{0\}$
  346. {+hide-if-modified-since{NaN} -crunch-if-none-match}
  347. # Set Header = If-Modified-Since: Gee, this date is invalid
  348. # Expect Header = REMOVAL
  349. # Set Header = If-Modified-Since: Thu, 04 Oct 2007 09:56:35 GMT
  350. # Expect Header = NO CHANGE
  351. TAG:^hide-if-modified-since\{NaN\}$
  352. #######################################################
  353. # Test crunch-outgoing-cookies
  354. #######################################################
  355. {\
  356. +crunch-outgoing-cookies \
  357. -crunch-incoming-cookies \
  358. -limit-cookie-lifetime \
  359. -session-cookies-only \
  360. -hide-if-modified-since \
  361. }
  362. # Set Header = If-Modified-Since: Gee, this date is invalid
  363. # Expect Header = NO CHANGE
  364. #
  365. # Set Header = Cookie: PREF=ID=6cf0abd34262:TM=117335617:LM=1617:S=jZypyJ7LPiwFi1_
  366. # Expect Header = REMOVAL
  367. TAG:^crunch-outgoing-cookies$
  368. #######################################################
  369. # Test session-cookies-only
  370. #
  371. # XXX: pretty useless as session-cookies-only doesn't
  372. # affect client headers.
  373. #######################################################
  374. {\
  375. -crunch-outgoing-cookies \
  376. -crunch-incoming-cookies \
  377. -limit-cookie-lifetime \
  378. +session-cookies-only \
  379. -hide-if-modified-since \
  380. }
  381. # Set Header = Cookie: NSC_gffe-iuuq-mc-wtfswfs=8efb330d3660;expires=Thu, 04-Oct-07 19:11:34 GMT;path=/
  382. # Expect Header = NO CHANGE
  383. #
  384. # Set Header = Cookie: PREF=ID=6cf0abd34262:TM=117335617:LM=1617:S=jZypyJ7LPiwFi1_
  385. # Expect Header = NO CHANGE
  386. TAG:^session-cookies-only$
  387. #######################################################
  388. # Test change-x-forwarded-for
  389. #######################################################
  390. {\
  391. -change-x-forwarded-for \
  392. }
  393. # Set Header = X-Forwarded-For: 10.0.0.1
  394. # Expect Header = NO CHANGE
  395. TAG:^-change-x-forwarded-for$
  396. {\
  397. +change-x-forwarded-for{block} \
  398. }
  399. # Set Header = X-Forwarded-For: 10.0.0.1
  400. # Expect Header = REMOVAL
  401. TAG:^change-x-forwarded-for\{block\}$
  402. {\
  403. +change-x-forwarded-for{add} \
  404. }
  405. # Set Header = X-Forwarded-For: 10.0.0.1
  406. # Expect Header = SOME CHANGE
  407. TAG:^change-x-forwarded-for\{add\}$
  408. #######################################################
  409. # Test hide-from-header
  410. #######################################################
  411. {\
  412. +hide-from-header{block}\
  413. }
  414. # Set Header = From: schneewitchen@example.org
  415. # Expect Header = REMOVAL
  416. TAG:^hide-from-header\{block\}$
  417. {\
  418. +hide-from-header{siebenzwerge@example.org}\
  419. }
  420. # Set Header = From: schneewitchen@example.org
  421. # Expect Header = From: siebenzwerge@example.org
  422. TAG:^hide-from-header\{siebenzwerge@example.org\}$
  423. #######################################################
  424. # Test prevent-compression
  425. #######################################################
  426. {\
  427. +prevent-compression\
  428. }
  429. # Set Header = Accept-Encoding: gzip, deflate
  430. # Expect Header = REMOVAL
  431. #
  432. # Set Header = Accept-Encoding: gzip
  433. # Expect Header = REMOVAL
  434. #
  435. # Set Header = Accept-Encoding: deflate
  436. # Expect Header = REMOVAL
  437. TAG:^prevent-compression$
  438. #######################################################
  439. # Test content filters which could cause problems with
  440. # range requests.
  441. #######################################################
  442. {\
  443. -client-header-tagger{range-requests} \
  444. +deanimate-gifs{last} \
  445. -filter \
  446. }
  447. # Set Header = Range: bytes=1234-5678
  448. # Expect Header = REMOVAL
  449. # Set Header = Range: bytes=1-5
  450. # Expect Header = REMOVAL
  451. # Set Header = If-Range: bytes=1234-5678
  452. # Expect Header = REMOVAL
  453. # Set Header = Request-Range: bytes=1234-5678
  454. # Expect Header = REMOVAL
  455. # Set Header = Range: foo
  456. # Expect Header = REMOVAL
  457. # Set Header = If-Range: foo
  458. # Expect Header = REMOVAL
  459. # Set Header = Request-Range: foo
  460. # Expect Header = REMOVAL
  461. # Set Header = Range: bytes=0-5678
  462. # Expect Header = NO CHANGE
  463. # Set Header = Range: bytes=0-
  464. # Expect Header = NO CHANGE
  465. # Set Header = If-Range: bytes=0-5678
  466. # Expect Header = NO CHANGE
  467. # Set Header = If-Range: bytes=0-
  468. # Expect Header = NO CHANGE
  469. # Set Header = Request-Range: bytes=0-5678
  470. # Expect Header = NO CHANGE
  471. # Set Header = Request-Range: bytes=0-
  472. # Expect Header = NO CHANGE
  473. TAG:^deanimate-gifs\{last\}$
  474. {\
  475. -client-header-tagger{range-requests} \
  476. -deanimate-gifs \
  477. +filter{banners-by-size} \
  478. }
  479. # Set Header = Range: bytes=1234-5678
  480. # Expect Header = REMOVAL
  481. # Set Header = Range: bytes=1-5
  482. # Expect Header = REMOVAL
  483. # Set Header = If-Range: bytes=1234-5678
  484. # Expect Header = REMOVAL
  485. # Set Header = Request-Range: bytes=1234-5678
  486. # Expect Header = REMOVAL
  487. # Set Header = Range: bytes=1-5
  488. # Expect Header = REMOVAL
  489. # Set Header = If-Range: bytes=1234-5678
  490. # Expect Header = REMOVAL
  491. # Set Header = Request-Range: bytes=1234-5678
  492. # Expect Header = REMOVAL
  493. # Set Header = Range: foo
  494. # Expect Header = REMOVAL
  495. # Set Header = If-Range: foo
  496. # Expect Header = REMOVAL
  497. # Set Header = Request-Range: foo
  498. # Expect Header = REMOVAL
  499. # Set Header = Range: bytes=0-5678
  500. # Expect Header = NO CHANGE
  501. # Set Header = Range: bytes=0-
  502. # Expect Header = NO CHANGE
  503. # Set Header = If-Range: bytes=0-5678
  504. # Expect Header = NO CHANGE
  505. # Set Header = If-Range: bytes=0-
  506. # Expect Header = NO CHANGE
  507. # Set Header = Request-Range: bytes=0-5678
  508. # Expect Header = NO CHANGE
  509. # Set Header = Request-Range: bytes=0-
  510. # Expect Header = NO CHANGE
  511. TAG:^filter\{banners-by-size\}$
  512. {\
  513. -client-header-tagger{range-requests} \
  514. -deanimate-gifs \
  515. -filter \
  516. }
  517. # Set Header = Range: bytes=1234-5678
  518. # Expect Header = NO CHANGE
  519. # Set Header = If-Range: bytes=1234-5678
  520. # Expect Header = NO CHANGE
  521. # Set Header = Request-Range: bytes=1234-5678
  522. # Expect Header = NO CHANGE
  523. TAG:^no-content-filter$
  524. {}
  525. # Set Header = Connection: keep-alive
  526. # Expect Header = NO CHANGE
  527. # Level = 13
  528. # Set Header = Connection:
  529. # Expect Header = REMOVAL
  530. # Level = 13
  531. TAG:^Connection: keep-alive$
  532. {}
  533. # Set Header = Connection: keep-alive
  534. # Expect Header = Connection: close
  535. # Level = 14
  536. # Set Header = Connection:
  537. # Expect Header = Connection: close
  538. # Level = 14
  539. TAG:^Connection: close$
  540. {}
  541. # Set Header = Connection: close
  542. # Expect Header = NO CHANGE
  543. # Level = 15
  544. TAG:^connection-sharing disabled$
  545. {}
  546. # Set Header = Connection: close
  547. # Expect Header = REMOVAL
  548. # Level = 16
  549. # Set Header = Connection: keep-alive
  550. # Expect Header = NO CHANGE
  551. # Level = 16
  552. TAG:^connection-sharing enabled$
  553. {}
  554. # XXX: Removing a header by not specifying a value is
  555. # an inherited curl feature and could be viewed as a
  556. # bug as far as Privoxy-Regression-Test is concerned.
  557. #
  558. # Set Header = Host:
  559. # Expect Header = Host: p.p
  560. TAG:^No Host header$
  561. {}
  562. # Set Header = Host: whatever.example.org
  563. # Expect Header = NO CHANGE
  564. TAG:^Host header other than the target host$
  565. {}
  566. # Set Header = Keep-Alive: 20
  567. # Expect Header = NO CHANGE
  568. # Level = 13
  569. # Set Header = Keep-Alive: timeout=20, max=3
  570. # Expect Header = NO CHANGE
  571. # Level = 13
  572. # Set Header = Keep-Alive: blah=fasel, timeout=20, max=3
  573. # Expect Header = NO CHANGE
  574. # Level = 13
  575. # Set Header = Keep-Alive: timeuot=20, max=3
  576. # Expect Header = REMOVAL
  577. # Level = 13
  578. # Set Header = Keep-Alive: twenty seconds please
  579. # Expect Header = REMOVAL
  580. # Level = 13
  581. TAG:^Parse Keep-Alive header$
  582. {}
  583. # Set Header = Keep-Alive: 20
  584. # Expect Header = REMOVAL
  585. # Level = 14
  586. # Set Header = Keep-Alive: timeout=20, max=3
  587. # Expect Header = REMOVAL
  588. # Level = 14
  589. # Set Header = Keep-Alive: blah=fasel, timeout=20, max=3
  590. # Expect Header = REMOVAL
  591. # Level = 14
  592. TAG:^Keep-Alive header removal$
  593. {}
  594. # XXX: check the RFC to use a real value
  595. # Set Header = proxy-connection: keep-alive
  596. # Expect Header = REMOVAL
  597. TAG:^Proxy-Connection removal$
  598. {}
  599. # Set Header = Proxy-Connection: keep-alive
  600. # Expect Header = REMOVAL
  601. TAG:^Proxy-Connection removal$
  602. {}
  603. # These are somewhat redundant when testing with
  604. # GET requests, but I want to remember then when
  605. # TRACE requests are supported.
  606. #
  607. # Set Header = Max-Forwards: 0
  608. # Expect Header = NO CHANGE
  609. # Set Header = Max-Forwards: 1
  610. # Expect Header = NO CHANGE
  611. # Set Header = Max-Forwards: -1
  612. # Expect Header = NO CHANGE
  613. # Set Header = Max-Forwards: 3
  614. # Expect Header = NO CHANGE
  615. TAG:^Max-Forwards header without TRACE method$
  616. {}
  617. # Set Header = Proxy-Authorization: blafaseldieda
  618. # Expect Header = REMOVAL
  619. # Level = 22
  620. TAG:^Proxy-Authorization header removal$
  621. {}
  622. # Set Header = Proxy-Authorization: blafaseldieda
  623. # Expect Header = Proxy-Authorization: blafaseldieda
  624. # Level = 23
  625. TAG:^Proxy-Authorization header forwarding$
  626. ################################################################
  627. #
  628. # Fairly dumb tests for Privoxy CGI pages.
  629. #
  630. # These are mainly useful for checking for memory leaks
  631. # with Valgrind or whether or not the user manual is installed
  632. # correctly.
  633. #
  634. # Note that if "Expect Status Code" is missing, 200 is implied.
  635. #
  636. ################################################################
  637. # Fetch Test = http://p.p/
  638. # Fetch Test = http://p.p/die
  639. # Expect Status Code = 404
  640. # Level = 18
  641. # Fetch Test = http://p.p/die
  642. # Expect Status Code = 200
  643. # Level = 19
  644. # Fetch Test = http://p.p/show-status
  645. # Fetch Test = http://config.privoxy.org/show-status?file=actions&index=0
  646. # Fetch Test = http://config.privoxy.org/show-status?file=filter&index=0
  647. # XXX: for the invalid ones we probably shouldn't return status code 200.
  648. # Fetch Test = http://config.privoxy.org/show-status?file=actions&index=100
  649. # Fetch Test = http://config.privoxy.org/show-status?file=actions&index=NaN
  650. # Fetch Test = http://config.privoxy.org/show-status?file=actions
  651. # Fetch Test = http://config.privoxy.org/show-status?file=filter&index=100
  652. # Fetch Test = http://config.privoxy.org/show-status?file=filter&index=NaN
  653. # Fetch Test = http://config.privoxy.org/show-status?file=filter
  654. # Fetch Test = http://config.privoxy.org/show-status?file=invalid
  655. # Fetch Test = http://config.privoxy.org/show-status?file=trust
  656. # Fetch Test = http://p.p/show-version
  657. # Expect Status Code = 404
  658. # Fetch Test = http://p.p/show-request
  659. # Fetch Test = http://p.p/show-url-info
  660. # Fetch Test = http://p.p/show-url-info?url=www.privoxy.org%2F
  661. # Fetch Test = http://p.p/show-url-info?url=http:%2F%2Fwww.privoxy.org%2F
  662. # Fetch Test = http://p.p/show-url-info?url=HTTp:%2F%2Fwww.privoxy.org%2F
  663. # Fetch Test = http://p.p/show-url-info?url=https:%2F%2Fwww.privoxy.org%2F
  664. # Fetch Test = http://p.p/show-url-info?url=HtTps:%2F%2Fwww.privoxy.org%2F
  665. # Fetch Test = http://p.p/show-url-info?url=ftp:%2F%2Fwww.privoxy.org%2F
  666. # Fetch Test = http://p.p/show-url-info?url=FTp:%2F%2Fwww.privoxy.org%2F
  667. # Fetch Test = http://p.p/show-url-info?url=
  668. # Fetch Test = http://p.p/show-url-info?url=%2F
  669. # Depends on FEATURE_TOGGLE
  670. # Fetch Test = http://p.p/toggle
  671. # Level = 20
  672. # Fetch Test = http://p.p/toggle
  673. # Expect Status Code = 403
  674. # Level = 21
  675. # Fetch Test = http://p.p/edit-actions
  676. # Expect Status Code = 403
  677. # Level = 12
  678. # Fetch Test = http://p.p/eaa
  679. # Expect Status Code = 403
  680. # Level = 12
  681. # Fetch Test = http://p.p/eau
  682. # Expect Status Code = 403
  683. # Level = 12
  684. # Fetch Test = http://p.p/ear
  685. # Expect Status Code = 403
  686. # Level = 12
  687. # Fetch Test = http://p.p/eal
  688. # Expect Status Code = 403
  689. # Level = 12
  690. # Fetch Test = http://p.p/eafu
  691. # Expect Status Code = 403
  692. # Level = 12
  693. # Fetch Test = http://p.p/eas
  694. # Expect Status Code = 403
  695. # Level = 12
  696. # Fetch Test = http://p.p/easa
  697. # Expect Status Code = 403
  698. # Level = 12
  699. # Fetch Test = http://p.p/easr
  700. # Expect Status Code = 403
  701. # Level = 12
  702. # Fetch Test = http://p.p/eass
  703. # Expect Status Code = 403
  704. # Level = 12
  705. # Fetch Test = http://p.p/edit-actions-for-url
  706. # Expect Status Code = 403
  707. # Level = 12
  708. # Fetch Test = http://p.p/edit-actions-list
  709. # Level = 12
  710. # Fetch Test = http://p.p/edit-actions-submit
  711. # Expect Status Code = 403
  712. # Level = 12
  713. # Expect Status Code = 403
  714. # Fetch Test = http://p.p/edit-actions-url
  715. # Expect Status Code = 403
  716. # Level = 12
  717. # Fetch Test = http://p.p/edit-actions-url-form
  718. # Expect Status Code = 403
  719. # Level = 12
  720. # Fetch Test = http://p.p/edit-actions-add-url
  721. # Expect Status Code = 403
  722. # Level = 12
  723. # Fetch Test = http://p.p/edit-actions-add-url-form
  724. # Expect Status Code = 403
  725. # Level = 12
  726. # Fetch Test = http://p.p/edit-actions-remove-url
  727. # Expect Status Code = 403
  728. # Level = 12
  729. # Fetch Test = http://p.p/edit-actions-remove-url-form
  730. # Expect Status Code = 403
  731. # Level = 12
  732. # Fetch Test = http://p.p/edit-actions-section-add
  733. # Expect Status Code = 403
  734. # Level = 12
  735. # Fetch Test = http://p.p/edit-actions-section-remove
  736. # Expect Status Code = 403
  737. # Level = 12
  738. # Fetch Test = http://p.p/edit-actions-section-swap
  739. # Expect Status Code = 403
  740. # Level = 12
  741. # Fetch Test = http://p.p/error-favicon.ico
  742. # Fetch Test = http://p.p/favicon.ico
  743. # Fetch Test = http://p.p/robots.txt
  744. # Fetch Test = http://p.p/send-banner
  745. # Trusted CGI Request = http://p.p/send-stylesheet
  746. # Fetch Test = http://p.p/send-stylesheet
  747. # Expect Status Code = 403
  748. # Fetch Test = http://p.p/t
  749. # Fetch Test = http://p.p/url-info-osd.xml
  750. # Fetch Test = http://p.p/client-tags
  751. # Level = 24
  752. # Trusted CGI Request = http://p.p/toggle-client-tag
  753. # Expect Status Code = 302
  754. # Level = 24
  755. # Fetch Test = http://p.p/toggle-client-tag
  756. # Expect Status Code = 403
  757. # Level = 24
  758. # Trusted CGI Request = http://p.p/edit-actions
  759. # Expect Status Code = 302
  760. # Level = 12 # Depends on the CGI editor being enabled
  761. # Fetch Test = http://p.p/does-not-exist
  762. # Expect Status Code = 404
  763. # Trusted CGI Request = http://p.p/eaa
  764. # Level = 12
  765. # Trusted CGI Request = http://p.p/eau
  766. # Level = 12
  767. # Trusted CGI Request = http://p.p/ear
  768. # Level = 12
  769. # Trusted CGI Request = http://p.p/eal
  770. # Level = 12
  771. # Trusted CGI Request = http://p.p/eafu
  772. # Level = 12
  773. # Trusted CGI Request = http://p.p/eas
  774. # Level = 12
  775. # Trusted CGI Request = http://p.p/easa
  776. # Level = 12
  777. # Trusted CGI Request = http://p.p/easr
  778. # Level = 12
  779. # Trusted CGI Request = http://p.p/eass
  780. # Level = 12
  781. # Trusted CGI Request = http://p.p/edit-actions-for-url
  782. # Level = 12
  783. # Trusted CGI Request = http://p.p/edit-actions-list
  784. # Level = 12
  785. # Trusted CGI Request = http://p.p/edit-actions-submit
  786. # Level = 12
  787. # Trusted CGI Request = http://p.p/edit-actions-url
  788. # Level = 12
  789. # Trusted CGI Request = http://p.p/edit-actions-url-form
  790. # Level = 12
  791. # Trusted CGI Request = http://p.p/edit-actions-add-url
  792. # Level = 12
  793. # Trusted CGI Request = http://p.p/edit-actions-add-url-form
  794. # Level = 12
  795. # Trusted CGI Request = http://p.p/edit-actions-remove-url
  796. # Level = 12
  797. # Trusted CGI Request = http://p.p/edit-actions-remove-url-form
  798. # Level = 12
  799. # Trusted CGI Request = http://p.p/edit-actions-section-add
  800. # Level = 12
  801. # Trusted CGI Request = http://p.p/edit-actions-section-remove
  802. # Level = 12
  803. # Trusted CGI Request = http://p.p/edit-actions-section-swap
  804. # Level = 12
  805. # Trusted CGI Request = http://p.p/send-stylesheet
  806. # The following tests depend on Privoxy being configured to deliver the user manual
  807. # Fetch Test = http://p.p/user-manual
  808. # Expect Status Code = 302
  809. # Level = 9
  810. # Fetch Test = http://p.p/user-manual/
  811. # Level = 9
  812. # Fetch Test = http://p.p/user-manual/actions-file.html
  813. # Level = 9
  814. # Fetch Test = http://p.p/user-manual/appendix.html
  815. # Level = 9
  816. # Fetch Test = http://p.p/user-manual/config.html
  817. # Level = 9
  818. # Fetch Test = http://p.p/user-manual/configuration.html
  819. # Level = 9
  820. # Fetch Test = http://p.p/user-manual/contact.html
  821. # Level = 9
  822. # Fetch Test = http://p.p/user-manual/copyright.html
  823. # Level = 9
  824. # Fetch Test = http://p.p/user-manual/files-in-use.jpg
  825. # Level = 9
  826. # Fetch Test = http://p.p/user-manual/filter-file.html
  827. # Level = 9
  828. # Fetch Test = http://p.p/user-manual/index.html
  829. # Level = 9
  830. # Fetch Test = http://p.p/user-manual/installation.html
  831. # Level = 9
  832. # Fetch Test = http://p.p/user-manual/introduction.html
  833. # Level = 9
  834. # Fetch Test = http://p.p/user-manual/p_doc.css
  835. # Level = 9
  836. # Fetch Test = http://p.p/user-manual/proxy2.jpg
  837. # Level = 9
  838. # Fetch Test = http://p.p/user-manual/proxy_setup.jpg
  839. # Level = 9
  840. # Fetch Test = http://p.p/user-manual/quickstart.html
  841. # Level = 9
  842. # Fetch Test = http://p.p/user-manual/seealso.html
  843. # Level = 9
  844. # Fetch Test = http://p.p/user-manual/startup.html
  845. # Level = 9
  846. # Fetch Test = http://p.p/user-manual/templates.html
  847. # Level = 9
  848. # Fetch Test = http://p.p/user-manual/whatsnew.html
  849. # Level = 9
  850. # Method Test = OPTIONS
  851. # Method Test = GET
  852. # Method Test = get
  853. # Method Test = gEt
  854. # Method Test = HEAD
  855. # Method Test = POST
  856. # Method Test = PUT
  857. # Method Test = DELETE
  858. # Method Test = OPTIONS
  859. # Method Test = TRACE
  860. # Method Test = CONNECT
  861. # Level = 25
  862. # Method Test = PROPFIND
  863. # Method Test = PROPPATCH
  864. # Method Test = MOVE
  865. # Method Test = COPY
  866. # Method Test = MKCOL
  867. # Method Test = LOCK
  868. # Method Test = UNLOCK
  869. # Method Test = BCOPY
  870. # Method Test = BMOVE
  871. # Method Test = BDELETE
  872. # Method Test = BPROPFIND
  873. # Method Test = BPROPPATCH
  874. # Method Test = SUBSCRIBE
  875. # Method Test = UNSUBSCRIBE
  876. # Method Test = NOTIFY
  877. # Method Test = POLL
  878. # Method Test = VERSION-CONTROL
  879. # Method Test = REPORT
  880. # Method Test = CHECKOUT
  881. # Method Test = CHECKIN
  882. # Method Test = UNCHECKOUT
  883. # Method Test = MKWORKSPACE
  884. # Method Test = UPDATE
  885. # Method Test = LABEL
  886. # Method Test = MERGE
  887. # Method Test = BASELINE-CONTROL
  888. # Method Test = MKACTIVITY
  889. # Method Test = PATCH
  890. # Method Test = PRIVOXY-REGRESSION-TEST-IN-THE-HOUSE
  891. # Expect Status Code = 400
  892. {+block{Forbidden Port. You are not supposed to see this.}}
  893. config.privoxy.org:1-/
  894. p.p:1-/
  895. {-block}
  896. config.privoxy.org:3,79-81/
  897. p.p:3,22,79-81/
  898. {+forward-override{forward-socks5 127.0.0.1:12345 .}}
  899. # Fetch Test = http://oh-dear-this-hostname-is-so-very-long-that-it-can-not-possibly-be-forwarded-through-socks5-as-a-result-we-therefore-expect-privoxy-to-return-an-error-response-instead-of-forwarding-the-request-because-as-already-mentioned-this-host-is-really-very-long.example
  900. # Expect Status Code = 503
  901. oh-dear-this-hostname-is-so-very-long-that-it-can-not-possibly-be-forwarded-through-socks5-as-a-result-we-therefore-expect-privoxy-to-return-an-error-response-instead-of-forwarding-the-request-because-as-already-mentioned-this-host-is-really-very-long.example/
  902. {+forward-override{forward-socks5 127.0.0.1:12345 .}}
  903. # Fetch Test = http://oh-dear-this-hostname-is-short-enough-but-there-is-no-socks5-server-listening.example
  904. # Expect Status Code = 503
  905. oh-dear-this-hostname-is-short-enough-but-there-is-no-socks5-server-listening.example
  906. {+forward-override{forward-socks4 127.0.0.1:12345 .}}
  907. # Fetch Test = http://oh-dear-this-hostname-is-short-enough-but-there-is-no-socks4-server-listening.example
  908. # Expect Status Code = 503
  909. oh-dear-this-hostname-is-short-enough-but-there-is-no-socks4-server-listening.example
  910. {+forward-override{forward-socks4a 127.0.0.1:12345 .}}
  911. # Fetch Test = http://oh-dear-this-hostname-is-short-enough-but-there-is-no-socks4a-server-listening.example
  912. # Expect Status Code = 503
  913. oh-dear-this-hostname-is-short-enough-but-there-is-no-socks4a-server-listening.example
  914. {+forward-override{forward-socks5 127.0.0.1:-1 127.0.0.1:12345}}
  915. # This one currently triggers the same error condition as the
  916. # test above (socks5 server unreachable), but once Privoxy
  917. # starts to properly reject invalid ports it should become useful.
  918. #
  919. # Fetch Test = http://invalid-forward5-gateway-port.example
  920. # Expect Status Code = 503
  921. invalid-forward5-gateway-port.example
  922. {+forward-override{forward-socks5 :12345 127.0.0.1:12345}}
  923. # Fetch Test = http://forward5-null-gateway-host.example
  924. # Expect Status Code = 503
  925. forward5-null-gateway-host.example
  926. {+limit-connect{443}}
  927. # Fetch Test = http://www.forbidden-connect.example:444/
  928. # Method = CONNECT
  929. # Expect Status Code = 403
  930. www.forbidden-connect.example/
  931. {+block{This request failed to make it to the target destination which means the test succeeded.}}
  932. # Fetch Test = http://www.blocked-request.example/blocked-request
  933. # Expect Status Code = 403
  934. www.blocked-request.example/blocked-request
  935. {+block}
  936. # Fetch Test = http://www.blocked-request.example/blocked-request-with-no-reason-specified
  937. # Expect Status Code = 403
  938. www.blocked-request.example/blocked-request-with-no-reason-specified
  939. # Some domain pattern tests
  940. #
  941. {+block{domain pattern test}}
  942. # Blocked URL = http://domain-pattern-test.example/
  943. # Blocked URL = http://domain-pattern-test.example.org/
  944. domain-pattern-test.example.
  945. {+block{Hostname patterns without trailing dots cover hostnames with trailing dots as well.}}
  946. # Blocked URL = http://trailing-dot.example.org./
  947. # Blocked URL = http://trailing-dot.example.org./foo
  948. trailing-dot.example.org
  949. {}
  950. # Just in case there is no white-space fuzzer in the house ...
  951. #
  952. # Set Header = X-LWS-Test: no superfluous white space here
  953. # Expect Header = NO CHANGE
  954. # Set Header = X-LWS-Test: superfluous white space in the house
  955. # Expect Header = X-LWS-Test: superfluous white space in the house
  956. # Set Header = X-LWS-Test : superfluous white space in the house
  957. # Expect Header = X-LWS-Test: superfluous white space in the house
  958. # Set Header = X-LWS-Test: :superfluous white space in the house
  959. # Expect Header = X-LWS-Test: :superfluous white space in the house
  960. # Set Header = X-LWS-Test: :no superfluous white space here
  961. # Expect Header = NO CHANGE
  962. # Set Header = X-LWS-Test: superfluous white tabs in the house
  963. # Expect Header = X-LWS-Test: superfluous white tabs in the house
  964. # Set Header = X-LWS-Test : superfluous white tabs in the house
  965. # Expect Header = X-LWS-Test: superfluous white tabs in the house
  966. # Set Header = X-LWS-Test: "leave quoted lws alone"
  967. # Expect Header = X-LWS-Test: "leave quoted lws alone"
  968. # Set Header = X-LWS-Test: "leave quoted lws alone" thxbye
  969. # Expect Header = X-LWS-Test: "leave quoted lws alone" thxbye
  970. # Set Header = X-LWS-Test: " Do I Look like quoted text? Me thinks not.
  971. # Expect Header = X-LWS-Test: " Do I Look like quoted text? Me thinks not.
  972. # Set Header = X-LWS-Test: "This is quoted" this is not "but this is again"
  973. # Expect Header = X-LWS-Test: "This is quoted" this is not "but this is again"
  974. # Set Header = X-LWS-Test: "This is quoted" this is not "this is " but " this again is not
  975. # Expect Header = X-LWS-Test: "This is quoted" this is not "this is " but " this again is not
  976. TAG:^LWS Tests$
  977. {+fast-redirects{check-decoded-url}}
  978. # Redirected URL = http://redirect.example.net/blafasel&url=http://redirected1.example.net/
  979. # Redirect Destination = http://redirected1.example.net/
  980. # Redirected URL = http://redirect.example.net/blafasel&url=http%3A%2F%2Fredirected2.example.net%2F&parameter=not-part-of-the-redirected-url
  981. # Redirect Destination = http://redirected2.example.net/
  982. # Redirected URL = http://redirect.example.net/blafasel&url=http%3A%2F%2Fredirected3.example.net%2F&parameter=not-part-of-the-redirected-url
  983. # Redirect Destination = http://redirected3.example.net/
  984. # Redirected URL = http://redirect.example.net/blafasel&url=http%3A%2F%2Fredirected4.example.net%2F%26parameter=part-of-the-redirected-url
  985. # Redirect Destination = http://redirected4.example.net/&parameter=part-of-the-redirected-url
  986. # Redirected URL = http://redirect.example.net/blafasel&url1=http%3A%2F%2Fredirected5.example.net%2F%26parameter1=part-of-the-redirected-url&url2=http%3A%2F%2Fredirected5.example.net%2F%26parameter2=part-of-the-redirected-url2
  987. # Redirect Destination = http://redirected5.example.net/&parameter2=part-of-the-redirected-url2
  988. # Redirected URL = http://redirect.example.net/blafasel&url1=http%3A%2F%2Fredirected6.example.net%2F%26parameter1=part-of-the-redirected-url&url2=http%3A%2F%2Fredirected6.example.net%2F%26parameter2=part-of-the-redirected-url2&parameter3=not-part-of-the-redirected-url2
  989. # Redirect Destination = http://redirected6.example.net/&parameter2=part-of-the-redirected-url2
  990. # Redirected URL = http://redirect.example.net/blafasel?x=http%3A%2F%2Fredirected7.example.net%2F%26parameter1=part-of-the-redirected-url1&parameter2=not-part-of-the-redirected-url1
  991. # Redirect Destination = http://redirected7.example.net/&parameter1=part-of-the-redirected-url1
  992. # Redirected URL = http://redirect.example.net/blafasel?x=http%3A%2F%2Fredirected8.example.net%2F%26parameter1=part-of-the-redirected-url1&parameter2=not-part-of-the-redirected-url1&parameter3=not-part-of-the-redirected-url1
  993. # Redirect Destination = http://redirected8.example.net/&parameter1=part-of-the-redirected-url1
  994. # Redirected URL = http://redirect.example.net/blafasel?a?b?c?d?e?f?g?h?i?j?k?l?m?n?o?p?q?r?s&t&u&v&w&x&y&z&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16x=http%3A%2F%2Fredirected8.example.net%2F%26parameter1=part-of-the-redirected-url1&parameter2=not-part-of-the-redirected-url1&parameter3=not-part-of-the-redirected-url1
  995. # Redirect Destination = http://redirected8.example.net/&parameter1=part-of-the-redirected-url1
  996. # Redirected URL = http://redirect.example.net/blafasel???????????????????????????????=http%3A%2F%2Fredirected8.example.net%2F%26parameter1=part-of-the-redirected-url1&parameter2=not-part-of-the-redirected-url1&parameter3=not-part-of-the-redirected-url1
  997. # Redirect Destination = http://redirected8.example.net/&parameter1=part-of-the-redirected-url1
  998. # Redirected URL = http://redirect.example.net/blafasel&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&=http%3A%2F%2Fredirected8.example.net%2F%26parameter1=part-of-the-redirected-url1&parameter2=not-part-of-the-redirected-url1&parameter3=not-part-of-the-redirected-url1
  999. # Redirect Destination = http://redirected8.example.net/&parameter1=part-of-the-redirected-url1
  1000. redirect.example.net/
  1001. # Redirected URL = http://redirect.example.net/blafaselhttp://redirect1.example.net/http://redirect2.example.net/
  1002. # Redirect Destination = http://redirect2.example.net/
  1003. # Redirected URL = http://redirect.example.net/blafasel%3A%2F%2Fredirect1.example.net/http://redirect2.example.net/
  1004. # Redirect Destination = http://redirect2.example.net/
  1005. # Redirected URL = http://redirect.example.net/blafaselhttp://redirect1.example.net/http%3A%2F%2Fredirect2.example.net/
  1006. # Redirect Destination = http://redirect2.example.net/
  1007. # These tests verify that Privoxy behaves as intended,
  1008. # given that the encoded redirect URLs are invalid,
  1009. # there are no correct redirect URLs.
  1010. # Redirected URL = http://redirect.example.net/%%%%%%%%%%%%%%%%%%%%%%blafaselhttp://redirect1.example.net/http%3A%2F%2Fredirect2.example.net/%%%%%%%%%%%%%%
  1011. # Redirect Destination = http://redirect2.example.net/%%%%%%%%%%%%%%
  1012. # Redirected URL = http://redirect.example.net/%%%%%%%%%%%%%%%%%%%%%%blafaselhttp://redirect1.example.net/http%3A%2F%2Fredirect2.example.net/%1%2%%3%4%5%6%7%8%9%0%0%%
  1013. # Redirect Destination = http://redirect2.example.net/%1%2%%3%4%5%6%7%8%9%0%0%%
  1014. {+fast-redirects{simple-check}}
  1015. # Redirected URL = http://redirect2.example.net/blafasel?x=http://redirected.example.net/&parameter1=part-of-the-redirected-url1&parameter2=part-of-the-redirected-url1
  1016. # Redirect Destination = http://redirected.example.net/&parameter1=part-of-the-redirected-url1&parameter2=part-of-the-redirected-url1
  1017. redirect2.example.net/
  1018. {+delay-response{1}}
  1019. # Fetch Test = http://config.privoxy.org/show-url-info?url=http%3A%2F%2Fwww.example.com%2Fprivoxy-test-delay-response
  1020. config.privoxy.org/show-url-info\?url=http%3A%2F%2Fwww\.example\.com%2Fprivoxy-test-delay-response