diff options
author | Matthew White <mehw.is.me@inventati.org> | 2016-09-18 08:01:22 +0200 |
---|---|---|
committer | Matthew White <mehw.is.me@inventati.org> | 2016-09-30 19:44:06 +0200 |
commit | a35f3dd4f6b0fc2b507c090ab7a8df7bb92d7edd (patch) | |
tree | 8defb74a239e7fdc34d06e4240fda434d769cfd1 /testenv/Test-metalink-xml-relpath-trust.py | |
parent | c403e67935677d2f32d18968a8afc6c98616b354 (diff) | |
download | wget-a35f3dd4f6b0fc2b507c090ab7a8df7bb92d7edd.tar.gz |
New: Metalink/XML v3 python class, update tests to use this class
* testenv/misc/metalinkv3_xml.py: New Metalink/XML v3 python class
* testenv/Test-metalink-xml-abspath-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-abspath.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-absprefix-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-absprefix.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-continue.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-emptyprefix-trust.py: Update test to use
the new Metalink/XML v3 python class
* testenv/Test-metalink-xml-homepath-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-homepath.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-homeprefix-trust.py: Update test to use
the new Metalink/XML v3 python class
* testenv/Test-metalink-xml-homeprefix.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-nohash.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-nourls.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-prefix-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-prefix.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-relpath-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-relpath.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-relprefix-trust.py: Update test to use the
new Metalink/XML v3 python class
* testenv/Test-metalink-xml-relprefix.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-size.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml-trust.py: Update test to use the new
Metalink/XML v3 python class
* testenv/Test-metalink-xml.py: Update test to use the new
Metalink/XML v3 python class
Diffstat (limited to 'testenv/Test-metalink-xml-relpath-trust.py')
-rwxr-xr-x | testenv/Test-metalink-xml-relpath-trust.py | 221 |
1 files changed, 65 insertions, 156 deletions
diff --git a/testenv/Test-metalink-xml-relpath-trust.py b/testenv/Test-metalink-xml-relpath-trust.py index f5a3a3bb..d2b4fc05 100755 --- a/testenv/Test-metalink-xml-relpath-trust.py +++ b/testenv/Test-metalink-xml-relpath-trust.py @@ -1,8 +1,7 @@ #!/usr/bin/env python3 + from sys import exit -from test.http_test import HTTPTest -from misc.wget_file import WgetFile -import hashlib +from misc.metalinkv3_xml import Metalinkv3_XML """ This is to test if Metalink/XML forbids relative paths. @@ -15,178 +14,88 @@ import hashlib Strip the directory from unsafe paths. """ + ############# File Definitions ############################################### -bad = "Ouch!" +wrong_file = "Ouch!" File1 = "Would you like some Tea?" File1_lowPref = "Do not take this" -File1_sha256 = hashlib.sha256 (File1.encode ('UTF-8')).hexdigest () File2 = "This is gonna be good" File2_lowPref = "Not this one too" -File2_sha256 = hashlib.sha256 (File2.encode ('UTF-8')).hexdigest () File3 = "A little more, please" File3_lowPref = "That's just too much" -File3_sha256 = hashlib.sha256 (File3.encode ('UTF-8')).hexdigest () File4 = "Maybe a biscuit?" File4_lowPref = "No, thanks" -File4_sha256 = hashlib.sha256 (File4.encode ('UTF-8')).hexdigest () File5 = "More Tea...?" File5_lowPref = "I have to go..." -File5_sha256 = hashlib.sha256 (File5.encode ('UTF-8')).hexdigest () - -MetaXml = \ -"""<?xml version="1.0" encoding="utf-8"?> -<metalink version="3.0" xmlns="http://www.metalinker.org/"> - <publisher> - <name>GNU Wget</name> - </publisher> - <license> - <name>GNU GPL</name> - <url>http://www.gnu.org/licenses/gpl.html</url> - </license> - <identity>Wget Test Files</identity> - <version>1.2.3</version> - <description>Wget Test Files description</description> - <files> - <file name="./File1"> <!-- rejected by libmetalink --> - <verification> - <hash type="sha256">{{FILE1_HASH}}</hash> - </verification> - <resources> - <url type="http" preference="35">http://{{SRV_HOST}}:{{SRV_PORT}}/wrong_file</url> - <url type="http" preference="40">http://{{SRV_HOST}}:{{SRV_PORT}}/404</url> - <url type="http" preference="25">http://{{SRV_HOST}}:{{SRV_PORT}}/File1_lowPref</url> - <url type="http" preference="30">http://{{SRV_HOST}}:{{SRV_PORT}}/File1</url> - </resources> - </file> - <file name="../File2"> <!-- rejected by libmetalink --> - <verification> - <hash type="sha256">{{FILE2_HASH}}</hash> - </verification> - <resources> - <url type="http" preference="35">http://{{SRV_HOST}}:{{SRV_PORT}}/wrong_file</url> - <url type="http" preference="40">http://{{SRV_HOST}}:{{SRV_PORT}}/404</url> - <url type="http" preference="25">http://{{SRV_HOST}}:{{SRV_PORT}}/File2_lowPref</url> - <url type="http" preference="30">http://{{SRV_HOST}}:{{SRV_PORT}}/File2</url> - </resources> - </file> - <file name="dir/./File3"> <!-- rejected by libmetalink --> - <verification> - <hash type="sha256">{{FILE3_HASH}}</hash> - </verification> - <resources> - <url type="http" preference="35">http://{{SRV_HOST}}:{{SRV_PORT}}/wrong_file</url> - <url type="http" preference="40">http://{{SRV_HOST}}:{{SRV_PORT}}/404</url> - <url type="http" preference="25">http://{{SRV_HOST}}:{{SRV_PORT}}/File3_lowPref</url> - <url type="http" preference="30">http://{{SRV_HOST}}:{{SRV_PORT}}/File3</url> - </resources> - </file> - <file name="dir/../File4"> <!-- rejected by libmetalink --> - <verification> - <hash type="sha256">{{FILE4_HASH}}</hash> - </verification> - <resources> - <url type="http" preference="35">http://{{SRV_HOST}}:{{SRV_PORT}}/wrong_file</url> - <url type="http" preference="40">http://{{SRV_HOST}}:{{SRV_PORT}}/404</url> - <url type="http" preference="25">http://{{SRV_HOST}}:{{SRV_PORT}}/File4_lowPref</url> - <url type="http" preference="30">http://{{SRV_HOST}}:{{SRV_PORT}}/File4</url> - </resources> - </file> - <file name="File5"> - <verification> - <hash type="sha256">{{FILE5_HASH}}</hash> - </verification> - <resources> - <url type="http" preference="35">http://{{SRV_HOST}}:{{SRV_PORT}}/wrong_file</url> - <url type="http" preference="40">http://{{SRV_HOST}}:{{SRV_PORT}}/404</url> - <url type="http" preference="25">http://{{SRV_HOST}}:{{SRV_PORT}}/File5_lowPref</url> - <url type="http" preference="30">http://{{SRV_HOST}}:{{SRV_PORT}}/File5</url> - </resources> - </file> - </files> -</metalink> -""" -wrong_file = WgetFile ("wrong_file", bad) - -# rejected by libmetalink -File1_orig = WgetFile ("File1", File1) -File1_nono = WgetFile ("File1_lowPref", File1_lowPref) - -# rejected by libmetalink -File2_orig = WgetFile ("File2", File2) -File2_nono = WgetFile ("File2_lowPref", File2_lowPref) - -# rejected by libmetalink -File3_orig = WgetFile ("File3", File3) -File3_nono = WgetFile ("File3_lowPref", File3_lowPref) - -# rejected by libmetalink -File4_orig = WgetFile ("File4", File4) -File4_nono = WgetFile ("File4_lowPref", File4_lowPref) - -File5_orig = WgetFile ("File5", File5) -File5_down = WgetFile ("File5", File5) -File5_nono = WgetFile ("File5_lowPref", File5_lowPref) - -MetaFile = WgetFile ("test.metalink", MetaXml) - -WGET_OPTIONS = "--trust-server-names --input-metalink test.metalink" -WGET_URLS = [[]] - -Files = [[ - wrong_file, - File1_orig, File1_nono, - File2_orig, File2_nono, - File3_orig, File3_nono, - File4_orig, File4_nono, - File5_orig, File5_nono -]] -Existing_Files = [MetaFile] - -ExpectedReturnCode = 0 -ExpectedDownloadedFiles = [ - File5_down, - MetaFile -] - -################ Pre and Post Test Hooks ##################################### -pre_test = { - "ServerFiles" : Files, - "LocalFiles" : Existing_Files -} -test_options = { - "WgetCommands" : WGET_OPTIONS, - "Urls" : WGET_URLS -} -post_test = { - "ExpectedFiles" : ExpectedDownloadedFiles, - "ExpectedRetcode" : ExpectedReturnCode -} - -http_test = HTTPTest ( - pre_hook=pre_test, - test_params=test_options, - post_hook=post_test, +############# Metalink/XML ################################################### +Meta = Metalinkv3_XML() + +# file_name: metalink:file "name" field +# save_name: metalink:file save name, if None the file is rejected +# content : metalink:file content +# +# size: +# True auto-compute size +# None no <size></size> +# any use this size +# +# hash_sha256: +# False no <verification></verification> +# True auto-compute sha256 +# None no <hash></hash> +# any use this hash +# +# srv_file : metalink:url server file +# srv_content: metalink:url server file content, if None the file doesn't exist +# utype : metalink:url type +# location : metalink:url location (default 'no location field') +# preference : metalink:url preference (default 999999) + +XmlName = "test.metalink" + +Meta.xml ( + # Metalink/XML file name + XmlName, + # file_name, save_name, content, size, hash_sha256 + ["./File1", None, File1, None, True, + # srv_file, srv_content, utype, location, preference + ["wrong_file", wrong_file, "http", None, 35], + ["404", None, "http", None, 40], + ["File1_lowPref", File1_lowPref, "http", None, 25], + ["File1", File1, "http", None, 30]], + ["../File2", None, File2, None, True, + ["wrong_file", wrong_file, "http", None, 35], + ["404", None, "http", None, 40], + ["File2_lowPref", File2_lowPref, "http", None, 25], + ["File2", File2, "http", None, 30]], + ["dir/./File3", None, File3, None, True, + ["wrong_file", wrong_file, "http", None, 35], + ["404", None, "http", None, 40], + ["File3_lowPref", File3_lowPref, "http", None, 25], + ["File3", File3, "http", None, 30]], + ["dir/../File4", None, File4, None, True, + ["wrong_file", wrong_file, "http", None, 35], + ["404", None, "http", None, 40], + ["File4_lowPref", File4_lowPref, "http", None, 25], + ["File4", File4, "http", None, 30]], + ["File5", "File5", File5, None, True, + ["wrong_file", wrong_file, "http", None, 35], + ["404", None, "http", None, 40], + ["File5_lowPref", File5_lowPref, "http", None, 25], + ["File5", File5, "http", None, 30]], ) -http_test.server_setup() -### Get and use dynamic server sockname -srv_host, srv_port = http_test.servers[0].server_inst.socket.getsockname () +Meta.print_meta () -MetaXml = MetaXml.replace('{{FILE1_HASH}}', File1_sha256) -MetaXml = MetaXml.replace('{{FILE2_HASH}}', File2_sha256) -MetaXml = MetaXml.replace('{{FILE3_HASH}}', File3_sha256) -MetaXml = MetaXml.replace('{{FILE4_HASH}}', File4_sha256) -MetaXml = MetaXml.replace('{{FILE5_HASH}}', File5_sha256) -MetaXml = MetaXml.replace('{{SRV_HOST}}', srv_host) -MetaXml = MetaXml.replace('{{SRV_PORT}}', str (srv_port)) -MetaFile.content = MetaXml - -err = http_test.begin () +err = Meta.http_test ( + "--trust-server-names " + \ + "--input-metalink " + XmlName, 0 +) exit (err) |