mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
ca0c272eae
* testenv/Makefile.am: Set SSL_TESTS env variable * testenv/Test--https-crl.py, testenv/Test--https.py, testenv/Test-hsts.py: Return 77 (SKIP) if SSL/TLS is not configured
83 lines
2.0 KiB
Python
Executable File
83 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from sys import exit
|
|
from test.http_test import HTTPTest
|
|
from test.base_test import HTTP, HTTPS
|
|
from misc.wget_file import WgetFile
|
|
import time
|
|
import os
|
|
|
|
"""
|
|
This test makes sure Wget can parse a given HSTS database and apply the indicated HSTS policy.
|
|
"""
|
|
|
|
TEST_NAME = "HSTS basic test"
|
|
print (os.getenv('SSL_TESTS'))
|
|
if os.getenv('SSL_TESTS') is None:
|
|
exit (77)
|
|
|
|
def hsts_database_path():
|
|
hsts_file = ".wget-hsts-testenv"
|
|
return os.path.abspath(hsts_file)
|
|
|
|
def create_hsts_database(path, host, port):
|
|
# we want the current time as an integer,
|
|
# not as a floating point
|
|
curtime = int(time.time())
|
|
max_age = "123456"
|
|
|
|
f = open(path, "w")
|
|
|
|
f.write("# dummy comment\n")
|
|
f.write(host + "\t" + str(port) + "\t0\t" + str(curtime) + "\t" + max_age + "\n")
|
|
f.close()
|
|
|
|
File_Name = "hw"
|
|
File_Content = "Hello, world!"
|
|
File = WgetFile(File_Name, File_Content)
|
|
|
|
Hsts_File_Path = hsts_database_path()
|
|
|
|
CAFILE = os.path.abspath(os.path.join(os.getenv('srcdir', '.'), 'certs', 'ca-cert.pem'))
|
|
|
|
WGET_OPTIONS = "--hsts-file=" + Hsts_File_Path + " --ca-certificate=" + CAFILE
|
|
WGET_URLS = [[File_Name]]
|
|
|
|
Files = [[File]]
|
|
Servers = [HTTPS]
|
|
Requests = ["http"]
|
|
|
|
ExpectedReturnCode = 0
|
|
ExpectedDownloadedFiles = [File]
|
|
|
|
pre_test = {
|
|
"ServerFiles" : Files,
|
|
"Domains" : ["localhost"]
|
|
}
|
|
post_test = {
|
|
"ExpectedFiles" : ExpectedDownloadedFiles,
|
|
"ExpectedRetCode" : ExpectedReturnCode,
|
|
}
|
|
test_options = {
|
|
"WgetCommands" : WGET_OPTIONS,
|
|
"Urls" : WGET_URLS
|
|
}
|
|
|
|
test = HTTPTest(
|
|
name = TEST_NAME,
|
|
pre_hook = pre_test,
|
|
post_hook = post_test,
|
|
test_params = test_options,
|
|
protocols = Servers,
|
|
req_protocols = Requests
|
|
)
|
|
|
|
# start the web server and create the temporary HSTS database
|
|
test.setup()
|
|
create_hsts_database(Hsts_File_Path, 'localhost', test.port)
|
|
|
|
err = test.begin()
|
|
|
|
# remove the temporary HSTS database
|
|
os.unlink(hsts_database_path())
|
|
exit(err)
|