Changeset 0e069b6 in mod_gnutls


Ignore:
Timestamp:
Dec 7, 2019, 11:22:36 AM (3 years ago)
Author:
Fiona Klute <fiona.klute@…>
Branches:
asyncio, main, master, proxy-ticket
Children:
eb84747
Parents:
7054040
Message:

Support plain HTTP in the Python test framework

This makes it possible to run test 26 "redirect HTTP to HTTPS" without
an external HTTP client, the only thing still different from most
other tests is the TEST_HTTP_PORT environment variable.

Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • configure.ac

    r7054040 r0e069b6  
    217217fi
    218218
    219 AC_PATH_PROGS([HTTP_CLI], [curl wget], [no])
     219AC_PATH_PROGS([HTTP_CLI], [curl], [no])
    220220
    221221MODULE_CFLAGS="${LIBGNUTLS_CFLAGS} ${GNUTLS_FEAT_CFLAGS} ${MSVA_CFLAGS} ${APXS_CFLAGS} ${AP_INCLUDES} ${APR_INCLUDES} ${APU_INCLUDES} ${STRICT_CFLAGS}"
  • test/mgstest/tests.py

    r7054040 r0e069b6  
    2727import yaml
    2828
     29from enum import Enum, auto
     30from http.client import HTTPConnection
    2931from string import Template
    3032
    3133from . import TestExpectationFailed
    3234from .http import HTTPSubprocessConnection
     35
     36class Transports(Enum):
     37    GNUTLS = auto()
     38    PLAIN = auto()
     39
     40    def __repr__(self):
     41        return f'{self.__class__.__name__!s}.{self.name}'
    3342
    3443class TestConnection(yaml.YAMLObject):
     
    5059        self.gnutls_params = gnutls_params
    5160        self.actions = actions
    52         self.transport = transport
     61        self.transport = Transports[transport.upper()]
    5362        if host:
    5463            self.host = subst_env(host)
     
    7382        command = command + ['-p', str(self.port), self.host]
    7483
    75         conn = HTTPSubprocessConnection(command, self.host, self.port,
    76                                         output_filter=filter_cert_log,
    77                                         timeout=timeout)
     84        if self.transport == Transports.GNUTLS:
     85            conn = HTTPSubprocessConnection(command, self.host, self.port,
     86                                            output_filter=filter_cert_log,
     87                                            timeout=timeout)
     88        elif self.transport == Transports.PLAIN:
     89            conn = HTTPConnection(self.host, port=self.port,
     90                                  timeout=timeout)
    7891
    7992        try:
  • test/test-26_redirect_HTTP_to_HTTPS.bash

    r7054040 r0e069b6  
    44# with "%{HTTPS}".
    55
    6 set -e
    7 : ${srcdir:="."}
    8 . ${srcdir}/common.bash
    9 netns_reexec ${@}
    10 
    11 testdir="${srcdir}/tests/26_redirect_HTTP_to_HTTPS"
    12 TEST_NAME="$(basename ${testdir})"
    13 . $(dirname ${0})/apache_service.bash
    14 
    156: ${TEST_HTTP_PORT:="9935"}
    167export TEST_HTTP_PORT
    178
    18 function stop_server
    19 {
    20     apache_service "${testdir}" "apache.conf" stop
    21 }
    22 apache_service "${testdir}" "apache.conf" start "${TEST_LOCK}"
    23 trap stop_server EXIT
    24 
    25 output="outputs/${TEST_NAME}.output"
    26 rm -f "$output"
    27 
    28 # Send status request over HTTP. This should get redirected to HTTPS.
    29 URL="http://${TEST_HOST}:${TEST_HTTP_PORT}/status?auto"
    30 if [ "$(basename ${HTTP_CLI})" = "curl" ]; then
    31     ${HTTP_CLI} --location --verbose --cacert authority/x509.pem "${URL}" \
    32                 >"${output}"
    33 elif [ "$(basename ${HTTP_CLI})" = "wget" ]; then
    34     ${HTTP_CLI} --ca-certificate=authority/x509.pem -O "${output}" "${URL}"
    35 else
    36     echo "No HTTP client (curl or wget) found, skipping." 2>&1
    37     exit 77
    38 fi
    39 
    40 # If the request was redirected correctly, the status report lists the
    41 # used ciphersuite.
    42 grep "Current TLS session: (TLS" "${output}"
    43 
    44 stop_server
    45 trap - EXIT
     9${srcdir}/runtests t-26
  • test/tests/Makefile.am

    r7054040 r0e069b6  
    2626        24_pkcs11_cert/apache.conf 24_pkcs11_cert/test.yml \
    2727        25_Disable_TLS_1.0/apache.conf 25_Disable_TLS_1.0/test.yml \
    28         26_redirect_HTTP_to_HTTPS/apache.conf \
     28        26_redirect_HTTP_to_HTTPS/apache.conf 26_redirect_HTTP_to_HTTPS/test.yml \
    2929        27_OCSP_server/apache.conf 27_OCSP_server/ocsp.conf 27_OCSP_server/test.yml \
    3030        28_HTTP2_support/apache.conf \
Note: See TracChangeset for help on using the changeset viewer.