From d6c0e249fb64b8bc63e7e2186007a3ce78b39300 Mon Sep 17 00:00:00 2001
From: Zhong Lufan <lufanzhong@gmail.com>
Date: Sat, 3 Feb 2024 22:18:42 +0800
Subject: [PATCH] Refactor test.bats.sh

---
 test/test.bats.sh | 86 +++++++++++++++++------------------------------
 1 file changed, 31 insertions(+), 55 deletions(-)

diff --git a/test/test.bats.sh b/test/test.bats.sh
index 6b36ee8..fdfb971 100755
--- a/test/test.bats.sh
+++ b/test/test.bats.sh
@@ -19,42 +19,24 @@ skip_no_aliaccess() {
 }
 
 test_signature_nonce() { #@test
-    run _aliapi_signature_nonce
-    nonceA=$output
-    [[ $status -eq 0 ]]
-    run _aliapi_signature_nonce
-    nonceB=$output
-    [[ $status -eq 0 ]]
-    [[ $nonceA != "$nonceB" ]]
+    nonceA=$(_aliapi_signature_nonce)
+    nonceB=$(_aliapi_signature_nonce)
+    assert_not_equal "$nonceA" "$nonceB"
 }
 
 test_signature_rpc() { #@test
-    run _aliapi_signature_rpc GET "key=value&foo=bar"
-    [[ $status -eq 0 ]]
-    [[ $output == "NcrN6odhMq2fD7LEpbT0A7K3TJg=" ]]
+    assert_equal "$(_aliapi_signature_rpc GET "key=value&foo=bar")" "NcrN6odhMq2fD7LEpbT0A7K3TJg="
 }
 
 test_timestamp_rpc() { #@test
-    run _aliapi_timestamp_rpc
-    [[ $status -eq 0 ]]
-    timestamp=$output
-    run grep -E "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|[1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](Z|\+00:00)$" <<< "$timestamp"
-    [[ $status -eq 0 ]]
-    [[ $output == "$timestamp" ]]
+    run -0 _aliapi_timestamp_rpc
+    assert_output --regexp "^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(0[0-9]|[1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](Z|\+00:00)$"
 }
 
 test_urlencode() { #@test
-    run _aliapi_urlencode "/foo &bar#"
-    [[ $status -eq 0 ]]
-    [[ $output == "%2Ffoo%20%26bar%23" ]]
-
-    run _aliapi_urlencode "中文测试"
-    [[ $status -eq 0 ]]
-    [[ $output == "%E4%B8%AD%E6%96%87%E6%B5%8B%E8%AF%95" ]]
-
-    run _aliapi_urlencode "$(echo -e "new\nline\ntest")"
-    [[ $status -eq 0 ]]
-    [[ $output == "new%0Aline%0Atest" ]]
+    assert_equal "$(_aliapi_urlencode "/foo &bar#")" "%2Ffoo%20%26bar%23"
+    assert_equal "$(_aliapi_urlencode "中文测试")" "%E4%B8%AD%E6%96%87%E6%B5%8B%E8%AF%95"
+    assert_equal "$(_aliapi_urlencode "$(echo -e "new\nline\ntest")")" "new%0Aline%0Atest"
 }
 
 test_check_vars() { #@test
@@ -64,15 +46,13 @@ test_check_vars() { #@test
     _AliAccessKeySecret=$AliAccessKeySecret
     unset AliAccessKeyId AliAccessKeySecret
 
-    run _aliapi_check_vars
-    [[ $status -eq 3 ]]
-    [[ $output == "Aliyun OpenAPI SDK: 'AliAccessKeyId' or 'AliAccessKeySecret' environment variable not found" ]]
+    run -3 _aliapi_check_vars
+    assert_output "Aliyun OpenAPI SDK: 'AliAccessKeyId' or 'AliAccessKeySecret' environment variable not found"
 
     AliAccessKeyId=$_AliAccessKeyId
     AliAccessKeySecret=$_AliAccessKeySecret
 
-    run _aliapi_check_vars
-    [[ $status -eq 0 ]]
+    _aliapi_check_vars
 }
 
 getQueryType() {
@@ -82,27 +62,20 @@ getQueryType() {
 test_rpc_api() { #@test
     skip_no_aliaccess
 
-    run aliapi_rpc GET api.test 0
-    [[ $status -eq 2 ]]
-    [[ $output == "aliapi_rpc: not enough parameters" ]]
+    run -2 aliapi_rpc GET api.test 0
+    assert_output "aliapi_rpc: not enough parameters"
 
-    run aliapi_rpc GET api.test 0 api unknown
-    [[ $status -eq 2 ]]
-    [[ $output == "aliapi_rpc: 'unknown' is unknown parameter" ]]
+    run -2 aliapi_rpc GET api.test 0 api unknown
+    assert_output "aliapi_rpc: 'unknown' is unknown parameter"
 
-    run aliapi_rpc GET api.test 0 api --unknown
-    [[ $status -eq 2 ]]
-    [[ $output == "aliapi_rpc: '--unknown' has no value" ]]
+    run -2 aliapi_rpc GET api.test 0 api --unknown
+    assert_output "aliapi_rpc: '--unknown' has no value"
 
-    run aliapi_rpc GET sts.aliyuncs.com 2015-04-01 GetCallerIdentity
-    [[ $status -eq 0 ]]
-    run grep "user/aliyun-openapi-shell-sdk-test" <<< "$output"
-    [[ $status -eq 0 ]]
+    run -0 aliapi_rpc GET sts.aliyuncs.com 2015-04-01 GetCallerIdentity
+    assert_output --partial "user/aliyun-openapi-shell-sdk-test"
 
-    run aliapi_rpc GET tag.aliyuncs.com 2018-08-28 ListTagKeys --RegionId cn-hangzhou --QueryType "getQueryType()"
-    [[ $status -eq 0 ]]
-    run grep '"Key":"openapi-shell-sdk-test"' <<< "$output"
-    [[ $status -eq 0 ]]
+    run -0 aliapi_rpc GET tag.aliyuncs.com 2018-08-28 ListTagKeys --RegionId cn-hangzhou --QueryType "getQueryType()"
+    assert_output --partial '"Key":"openapi-shell-sdk-test"'
 }
 
 test_cli() { #@test
@@ -110,14 +83,17 @@ test_cli() { #@test
 
     export AliAccessKeyId AliAccessKeySecret
 
-    run ./AliyunOpenApiSDK.sh
-    [[ $status -eq 2 ]]
-    [[ $output == "AliyunOpenApiSDK.sh <--rpc> <http_method> <host> <api_version> <api_action> [<--key> <value>...]" ]]
+    run -2 ./AliyunOpenApiSDK.sh
+    assert_output "AliyunOpenApiSDK.sh <--rpc> <http_method> <host> <api_version> <api_action> [<--key> <value>...]"
 
-    run ./AliyunOpenApiSDK.sh --cpr
-    [[ $status -eq 2 ]]
-    [[ $output == "Aliyun OpenAPI SDK: '--cpr' is unknown parameter" ]]
+    run -2 ./AliyunOpenApiSDK.sh --cpr
+    assert_output "Aliyun OpenAPI SDK: '--cpr' is unknown parameter"
 
+    run -0 ./AliyunOpenApiSDK.sh --rpc GET sts.aliyuncs.com 2015-04-01 GetCallerIdentity
+    assert_output --partial "user/aliyun-openapi-shell-sdk-test"
+
+    run -0 ./AliyunOpenApiSDK.sh --rpc GET tag.aliyuncs.com 2018-08-28 ListTagKeys --RegionId cn-hangzhou --QueryType MetaTag
+    assert_output --partial '"Key":"openapi-shell-sdk-test"'
 }
 
 test_command_not_found() { #@test