mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
54058d2b18
* testenv/Makefile.am: added new test 'Test-hsts.py'. * testenv/Test-hsts.py: new test for HSTS. * testenv/conf/domains.py: new hook to override domain list. * testenv/test/base_test.py: (__init__): new optional parameter for tests 'req_protocols'. (get_domain_addr): set the instance variables 'addr' and 'port'. Return address as an array (domain, port) instead of string. (gen_cmd_line): take into account domain and port. * testenv/test/http_test.py (__init__): new optional parameter 'req_protocols'. (setup): new function. Call to server_setup() decoupled from begin() and moved here. (begin): call to superclass to maintain backward compatibility. Removed call to server_setup(). This patch adds a new parameter to the test suite called 'req_protocols', and a new function called 'setup'. The ability for tests to be able to set some extra parameters such as the actual requested protocols (with 'req_protocols') became obvious when support for HSTS was added to Wget, where the requested URI and the actual executed URI do not have to be the same. This new parameter is optional and if not specified, the test suite behaves as before. Also, the new function 'setup' is provided as a means to start the test HTTP server, but not launch the test yet (this is done when calling 'begin', as usual), in case we want to query the address and port in which the test server listens. If 'setup' is not called, it is automatically invoked when calling 'begin'. With these measures, we preserve backward-compatibility with existing tests.
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
from misc.colour_terminal import print_green
|
|
from server.http.http_server import HTTPd, HTTPSd
|
|
from test.base_test import BaseTest, HTTP, HTTPS
|
|
|
|
|
|
class HTTPTest(BaseTest):
|
|
|
|
""" Class for HTTP Tests. """
|
|
|
|
# Temp Notes: It is expected that when pre-hook functions are executed,
|
|
# only an empty test-dir exists. pre-hook functions are executed just prior
|
|
# to the call to Wget is made. post-hook functions will be executed
|
|
# immediately after the call to Wget returns.
|
|
|
|
def __init__(self,
|
|
name="Unnamed Test",
|
|
pre_hook=None,
|
|
test_params=None,
|
|
post_hook=None,
|
|
protocols=(HTTP,),
|
|
req_protocols=None):
|
|
super(HTTPTest, self).__init__(name,
|
|
pre_hook,
|
|
test_params,
|
|
post_hook,
|
|
protocols,
|
|
req_protocols)
|
|
|
|
def setup(self):
|
|
self.server_setup()
|
|
self.ready = True
|
|
|
|
def begin(self):
|
|
if not self.ready:
|
|
# this is to maintain compatibility with scripts that
|
|
# don't call setup()
|
|
self.setup()
|
|
with self:
|
|
# If any exception occurs, self.__exit__ will be immediately called.
|
|
# We must call the parent method in the end in order to verify
|
|
# whether the tests succeeded or not.
|
|
if self.ready:
|
|
self.do_test()
|
|
print_green("Test Passed.")
|
|
else:
|
|
self.tests_passed = False
|
|
super(HTTPTest, self).begin()
|
|
|
|
def instantiate_server_by(self, protocol):
|
|
server = {HTTP: HTTPd,
|
|
HTTPS: HTTPSd}[protocol]()
|
|
server.start()
|
|
|
|
return server
|
|
|
|
def request_remaining(self):
|
|
return [s.server_inst.get_req_headers()
|
|
for s in self.servers]
|
|
|
|
def stop_server(self):
|
|
for server in self.servers:
|
|
server.server_inst.shutdown()
|
|
# vim: set ts=4 sts=4 sw=4 tw=80 et :
|