#!/usr/bin/env bash # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 # shellcheck disable=SC2015 # shellcheck disable=SC2154 # shellcheck disable=SC1091 source ./utils/test_utils.sh declare -i success=0 failure=0 main() { json_body() { local -r kms_operation=$1 local -r uuid="$(uuidgen)" cat <<-EOM { "requestMetadata": { "awsPrincipalArn": "$aws_principal_arn", "kmsKeyArn": "$aws_key_arn", "kmsOperation": "$kms_operation", "kmsRequestId": "${uuid,,}", "kmsViaService": "$kms_via_service" } } EOM } run_test "keys/$KEY_ID/metadata" "$(json_body "DescribeKey")" \ "GetKeyMetadata for DescribeKey" \ "\"keyStatus\":" && ((++success)) || ((++failure)) run_test "keys/$KEY_ID/metadata" "$(json_body "CreateKey")" \ "GetKeyMetadata for CreateKey" \ "\"keyStatus\":" && ((++success)) || ((++failure)) run_test "keys/$KEY_ID/metadata" "{}" \ "GetKeyMetadata without requestMetadata" \ "ValidationException" && ((++success)) || ((++failure)) # shellcheck disable=SC2154 run_test "keys/$KEY_ID/metadata" "$json_body_with_empty_request_metadata" \ "GetKeyMetadata with empty requestMetadata" \ "ValidationException" && ((++success)) || ((++failure)) run_test "keys/non_existing_key/metadata" "$(json_body "DescribeKey")" \ "GetKeyMetadata for a non-existent key" \ "KeyNotFoundException" && ((++success)) || ((++failure)) SIGV4_ACCESS_KEY_ID=Invalid$SIGV4_ACCESS_KEY_ID \ run_test "keys/$KEY_ID/metadata" "$(json_body "DescribeKey")" \ "GetKeyMetadata with an invalid Sigv4 access id" \ "AuthenticationFailedException" && ((++success)) || ((++failure)) SIGV4_SECRET_ACCESS_KEY=Invalid$SIGV4_SECRET_ACCESS_KEY \ run_test "keys/$KEY_ID/metadata" "$(json_body "DescribeKey")" \ "GetKeyMetadata with an invalid Sigv4 access key" \ "AuthenticationFailedException" && ((++success)) || ((++failure)) URI_PREFIX=$URI_PREFIX/invalid \ run_test "keys/$KEY_ID/metadata" "$(json_body "DescribeKey")" \ "GetKeyMetadata with an invalid URI prefix" \ "InvalidUriPathException" && ((++success)) || ((++failure)) } if ((${#@})); then counts_file="$1/$(basename "$0").counts" declare -r counts_file main echo "$success $failure" > "$counts_file" else check_environment main summarize "$success" "$failure" fi