github.com/go-graphite/carbonapi@v0.17.0/cmd/carbonapi/config_tests/004-https.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  CURL_VERSION=$(curl --version | head -n 1 | awk '{print $2}')
     4  
     5  CURL_MAJOR_V=$(cut -d. -f 1 <<< "${CURL_VERSION}")
     6  CURL_MINOR_V=$(cut -d. -f 2 <<< "${CURL_VERSION}")
     7  
     8  if [[ ${CURL_MAJOR_V} -le 7 ]]; then
     9  	if [[ ${CURL_MAJOR_V} -lt 7 ]] || [[ ${CURL_MINOR_V} -lt 54 ]]; then
    10  		echo "curl >= 7.54 is required"
    11  		exit 2
    12  	fi
    13  fi
    14  
    15  set -e
    16  
    17  source "$(dirname "${0}")/common.sh"
    18  
    19  TEST_DIR=$(dirname "${0}")
    20  TEST_NAME=$(basename "${0}")
    21  STATUS=0
    22  echo "${TEST_NAME/.sh/.yaml}"
    23  
    24  EXPECTED_LISTENERS=(
    25  	"127.0.0.1:8082"
    26  )
    27  
    28  trap "cleanup" SIGINT SIGTERM EXIT INT QUIT TERM EXIT
    29  echo "carbonapi -config \"${TEST_DIR}/${TEST_NAME/.sh/.yaml}\" &"
    30  ./carbonapi -config "${TEST_DIR}/${TEST_NAME/.sh/.yaml}" &
    31  sleep 2
    32  
    33  LISTENERS=$(get_listeners "carbonapi")
    34  
    35  set +e
    36  
    37  cnt=0
    38  for l in ${LISTENERS}; do
    39  	cnt=$((cnt+1))
    40  	found=0
    41  	for el in ${EXPECTED_LISTENERS[@]}; do
    42  		if [[ "${el}" == "${l}" ]]; then
    43  			found=1
    44  			break
    45  		fi
    46  	done
    47  	if [[ ${found} -eq 0 ]]; then
    48  		echo "Listener ${l} is not expected"
    49  		STATUS=1
    50  	fi
    51  done
    52  
    53  if [[ ${cnt} -ne ${#EXPECTED_LISTENERS[@]} ]]; then
    54  	echo "Expected listener count mismatch, got ${cnt}, expected ${#EXPECTED_LISTENERS[@]}"
    55  	STATUS=1
    56  fi
    57  
    58  if [[ ${STATUS} -ne 0 ]]; then
    59  	echo "${TEST_NAME} FAIL"
    60  	kill %1
    61  	wait
    62  	exit ${STATUS}
    63  fi
    64  
    65  # CURL should fail as server runs in tls 1.3 only mode
    66  OUT=$(curl --tlsv1.2 --tls-max 1.2 -kvvI https://127.0.0.1:8082 2>&1)
    67  CURL_STATUS=${?}
    68  if [[ ${CURL_STATUS} -eq 0 ]]; then
    69  	echo "${OUT}"
    70  	echo "${TEST_NAME} FAIL"
    71  	STATUS=1
    72  	kill %1
    73  	wait
    74  	exit ${STATUS}
    75  fi
    76  
    77  # CURL should succeed as server both supports tls 1.3
    78  OUT=$(curl --tlsv1.3 -kvvI https://127.0.0.1:8082 2>&1)
    79  CURL_STATUS=${?}
    80  if [[ ${CURL_STATUS} -ne 0 ]]; then
    81    echo "${OUT}"
    82    STATUS=1
    83    if [[ ${CURL_STATUS} -eq 4 ]] && [[ ${_RUNNING_OS} == "Darwin" ]]; then
    84      echo "tls1.3 not supported on OSX in brew version of curl, assuming it's ok"
    85      echo "${TEST_NAME} OK"
    86      STATUS=0
    87    else
    88      echo "${TEST_NAME} FAIL"
    89    fi
    90    kill %1
    91    wait
    92    exit ${STATUS}
    93  fi
    94  
    95  EXPECTED_CURL_OUTPUT=(
    96  	"connection using TLSv1.3"
    97  	"subject: CN=carbonapi-test1"
    98  	"HTTP/2 200"
    99  )
   100  
   101  OLD_IFS="${IFS}"
   102  IFS=$'\n'
   103  for t in ${EXPECTED_CURL_OUTPUT[@]}; do
   104  	IFS="${OLD_IFS}"
   105  	grep -q "${t}" <<< "${OUT}"
   106  	if [[ ${?} -ne 0 ]]; then
   107  		echo
   108  		echo "Test for '${t}' in output failed"
   109  		echo "${OUT}"
   110  		echo "${TEST_NAME} FAIL"
   111  		STATUS=1
   112  	fi
   113  done
   114  IFS="${OLD_IFS}"
   115  
   116  kill %1
   117  wait
   118  
   119  if [[ ${STATUS} -eq 0 ]]; then
   120  	echo "${TEST_NAME} OK"
   121  else
   122  	echo "${TEST_NAME} FAIL"
   123  fi
   124  
   125  exit ${STATUS}