From 3cdb16a96924cc6c4dcae2e6976ada06f517884a Mon Sep 17 00:00:00 2001 From: Dirk Wetter Date: Fri, 24 Jan 2020 17:42:17 +0100 Subject: [PATCH] Prepare baseline_ipv4_http as a good example ... ... as indicated in CONTRIBUTING.md / Coding_Convention.md --- t/20_baseline_ipv4_http.t | 68 ++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/t/20_baseline_ipv4_http.t b/t/20_baseline_ipv4_http.t index 3e0bba3..b6412b6 100755 --- a/t/20_baseline_ipv4_http.t +++ b/t/20_baseline_ipv4_http.t @@ -1,54 +1,64 @@ #!/usr/bin/env perl -# Just a functional test, whether there are any problems on the client side -# Probably we could also inspect the JSON for any problems for +# baseline test for testssl, screen and JSON output + +# This is referred by the documentation. + +# We could also inspect the JSON for any problems for # "id" : "scanProblem" # "finding" : "Scan interrupted" use strict; use Test::More; use Data::Dumper; -# use JSON; -# if we need JSON we need to comment this and the lines below in +use JSON; my $tests = 0; my $prg="./testssl.sh"; -my $check2run ="-p -s -P --pfs -S -h -U -q --ip=one --color 0"; -my $uri=""; +my $check2run="-p -s -P --pfs -S -h -U -q --ip=one --color 0"; +my $uri="google.com"; my $socket_out=""; my $openssl_out=""; # Blacklists we use to trigger an error: my $socket_regex_bl='(e|E)rror|\.\/testssl\.sh: line |(f|F)atal'; my $openssl_regex_bl='(e|E)rror|(f|F)atal|\.\/testssl\.sh: line |Oops|s_client connect problem'; +my $json_regex_bl='(id".*:\s"scanProblem"|severity".*:\s"FATAL"|"Scan interrupted")'; -# my $socket_json=""; -# my $openssl_json=""; -# $check2run="--jsonfile tmp.json $check2run"; +my $socket_json=""; +my $openssl_json=""; +$check2run="--jsonfile tmp.json $check2run"; die "Unable to open $prg" unless -f $prg; -$uri="google.com"; - -# unlink "tmp.json"; -printf "\n%s\n", "Baseline unit test IPv4 via sockets --> $uri ..."; -$socket_out = `./testssl.sh $check2run $uri 2>&1`; -# $socket_json = json('tmp.json'); -unlike($socket_out, qr/$socket_regex_bl/, ""); -$tests++; - -# unlink "tmp.json"; -printf "\n%s\n", "Baseline unit test IPv4 via OpenSSL --> $uri ..."; -$openssl_out = `./testssl.sh --ssl-native $check2run $uri 2>&1`; -# $openssl_json = json('tmp.json'); -# With Google only we encounter an error as they return a 0 char with openssl, so we white list this pattern here: -$openssl_out =~ s/testssl.*warning: command substitution: ignored null byte in input\n//g; -unlike($openssl_out, qr/$openssl_regex_bl/, ""); -$tests++; - - -done_testing($tests); +# Provide proper start conditions unlink "tmp.json"; +# Title +printf "\n%s\n", "Baseline unit test IPv4 against \"$uri\""; + +#1 +$socket_out = `$prg $check2run $uri 2>&1`; +$socket_json = json('tmp.json'); +unlink "tmp.json"; +unlike($socket_out, qr/$socket_regex_bl/, "via sockets, terminal output"); +$tests++; +unlike($socket_json, qr/$json_regex_bl/, "via sockets JSON output"); +$tests++; + +#2 +$openssl_out = `$prg --ssl-native $check2run $uri 2>&1`; +$openssl_json = json('tmp.json'); +unlink "tmp.json"; +# With Google only we somtimes encounter an error as they return a 0 char with openssl, so we white list this pattern here: +# It should be fixed in the code though so we comment this out +# $openssl_out =~ s/testssl.*warning: command substitution: ignored null byte in input\n//g; +unlike($openssl_out, qr/$openssl_regex_bl/, "via OpenSSL"); +$tests++; +unlike($openssl_json, qr/$json_regex_bl/, "via OpenSSL JSON output"); +$tests++; + +done_testing($tests); +printf "\n"; sub json($) {