summaryrefslogtreecommitdiff
path: root/testenv/Test-metalink-xml-relpath-trust.py
diff options
context:
space:
mode:
authorMatthew White <mehw.is.me@inventati.org>2016-09-18 08:01:22 +0200
committerMatthew White <mehw.is.me@inventati.org>2016-09-30 19:44:06 +0200
commita35f3dd4f6b0fc2b507c090ab7a8df7bb92d7edd (patch)
tree8defb74a239e7fdc34d06e4240fda434d769cfd1 /testenv/Test-metalink-xml-relpath-trust.py
parentc403e67935677d2f32d18968a8afc6c98616b354 (diff)
downloadwget-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-xtestenv/Test-metalink-xml-relpath-trust.py221
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)