diff options
Diffstat (limited to 'testenv/Test-hsts.py')
-rwxr-xr-x | testenv/Test-hsts.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/testenv/Test-hsts.py b/testenv/Test-hsts.py new file mode 100755 index 0000000..19bd4c4 --- /dev/null +++ b/testenv/Test-hsts.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +from sys import exit +from test.http_test import HTTPTest +from test.base_test import HTTPS, SKIP_TEST +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. +""" + +print (os.getenv('SSL_TESTS')) +if os.getenv('SSL_TESTS') is None: + exit (SKIP_TEST) + +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( + 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) |