From 3f80783b1188afdf032571b48bc47a160d6dccf6 Mon Sep 17 00:00:00 2001 From: Ryan Chu Date: Thu, 3 May 2018 15:01:57 +0200 Subject: Rework QNetworkReply tests to use docker-based test servers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change frees the tests of their dependence on the Qt internal test server (qt-test-server.qt-test-net). It makes the developers run the tests out of Qt testing infrastructure. If the user has installed Docker engine on their host, the test servers will be built up inside separate Docker containers, and then, the test case goes with the Docker-based test servers. Otherwise, the test case will keep using the Qt internal test server. Task-number: QTQAINFRA-1686 Change-Id: I518bc3675bfd658938509744b0e7e0610bc8bf66 Reviewed-by: Jędrzej Nowacki --- .../apache2/testdata/www/cgi-bin/get-cookie.cgi | 5 +++ .../apache2/testdata/www/cgi-bin/http-delete.cgi | 22 ++++++++++++ .../cgi-bin/http-unknown-authentication-method.cgi | 17 +++++++++ .../www/cgi-bin/httpcachetest_expires500.cgi | 12 +++++++ .../apache2/testdata/www/cgi-bin/multipart.cgi | 42 ++++++++++++++++++++++ .../apache2/testdata/www/cgi-bin/set-cookie.cgi | 9 +++++ .../testdata/www/htdocs/protected/.htaccess | 5 +++ 7 files changed, 112 insertions(+) create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/get-cookie.cgi create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/http-delete.cgi create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/http-unknown-authentication-method.cgi create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/httpcachetest_expires500.cgi create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/multipart.cgi create mode 100755 tests/testserver/apache2/testdata/www/cgi-bin/set-cookie.cgi create mode 100644 tests/testserver/apache2/testdata/www/htdocs/protected/.htaccess (limited to 'tests/testserver') diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/get-cookie.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/get-cookie.cgi new file mode 100755 index 0000000000..59f40ac78b --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/get-cookie.cgi @@ -0,0 +1,5 @@ +#!/bin/sh + +echo "Content-Type: text/plain" +echo +echo "$HTTP_COOKIE" diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/http-delete.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/http-delete.cgi new file mode 100755 index 0000000000..18000c9f4c --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/http-delete.cgi @@ -0,0 +1,22 @@ +#!/usr/bin/perl + +use CGI; + +if ($ENV{'REQUEST_METHOD'} eq "DELETE") { + $queryString = $ENV{'QUERY_STRING'}; + if ($queryString eq "200-ok") { + $returnCode = 200; + } elsif ($queryString eq "202-accepted") { + $returnCode = 202; + } elsif ($queryString eq "204-no-content") { + $returnCode = 204; + } else { + $returnCode = 404; + } +} else { + # 405 = Method Not Allowed + $returnCode = 405; +} + +$q = new CGI; +print $q->header(-status=>$returnCode); diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/http-unknown-authentication-method.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/http-unknown-authentication-method.cgi new file mode 100755 index 0000000000..ce47e8384c --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/http-unknown-authentication-method.cgi @@ -0,0 +1,17 @@ +#!/usr/bin/perl + +use CGI; + +$queryString = $ENV{'QUERY_STRING'}; +my $message; +if ($queryString eq "407-proxy-authorization-required") { + $status = 407; +} else { + $status = 401; +} + +$q = new CGI; +print $q->header(-status=>$status, + -type=>"text/plain", + -WWW_Authenticate=>'WSSE realm="Test", profile="TestProfile"'), + "authorization required"; diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/httpcachetest_expires500.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/httpcachetest_expires500.cgi new file mode 100755 index 0000000000..66a3741641 --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/httpcachetest_expires500.cgi @@ -0,0 +1,12 @@ +#!/bin/bash +if [ "${HTTP_IF_MODIFIED_SINCE}" ] +then + echo "Status: 500" + echo "" + exit; +fi + +echo "Expires: Mon, 30 Oct 2028 14:19:41 GMT" +echo "Content-type: text/html"; +echo "" +echo "Hello World!" diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/multipart.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/multipart.cgi new file mode 100755 index 0000000000..6973875cc9 --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/multipart.cgi @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use CGI; +use Digest::MD5 qw(md5_hex); + +$q = new CGI; +print $q->header(); + +$contentType = $ENV{"CONTENT_TYPE"}; +print "content type: $contentType\n"; + +if ($contentType =~ /^multipart\/form-data/) { + foreach my $key ($q->param) { + foreach my $value ($q->param($key)) { + if ($key =~ /text/) { + $retValue = $value; + } else { + $retValue = md5_hex($value); + } + print "key: $key, value: $retValue\n"; + } + } +} else { + #$contentLength = $ENV{"CONTENT_LENGTH"}; + #print "content length: $contentLength\r\n"; + + $data = $q->param('POSTDATA'); + $data =~ s/--\S*--$//; # remove ending boundary + @parts = split(/--\S*\r\n/, $data); + shift(@parts); + foreach (@parts) { + #print "raw: $_"; + ($header, $content) = split("\r\n\r\n"); + @headerFields = split("\r\n", $header); + foreach (@headerFields) { + ($fieldName, $value) = split(": "); + print "header: $fieldName, value: '$value'\n"; + } + $content =~ s/\r\n//; + print "content: $content\n\n"; + } +} diff --git a/tests/testserver/apache2/testdata/www/cgi-bin/set-cookie.cgi b/tests/testserver/apache2/testdata/www/cgi-bin/set-cookie.cgi new file mode 100755 index 0000000000..dc463f00f3 --- /dev/null +++ b/tests/testserver/apache2/testdata/www/cgi-bin/set-cookie.cgi @@ -0,0 +1,9 @@ +#!/bin/sh + +echo "Content-type: text/plain" +while read line; do + echo "Set-Cookie: $line" +done + +echo +echo "Success" diff --git a/tests/testserver/apache2/testdata/www/htdocs/protected/.htaccess b/tests/testserver/apache2/testdata/www/htdocs/protected/.htaccess new file mode 100644 index 0000000000..c465494167 --- /dev/null +++ b/tests/testserver/apache2/testdata/www/htdocs/protected/.htaccess @@ -0,0 +1,5 @@ +Require valid-user +AuthUserFile /home/qt-test-server/passwords +AuthType basic +AuthName "password-protected area" +Options Indexes -- cgit v1.2.3