NFCcreate-web/linux64_release/test_url_key_combinations.sh
2025-09-25 19:04:00 +08:00

125 lines
4.0 KiB
Bash

#!/bin/bash
# 顏色定義
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
EXEC="./nt4h_c_example"
PASSED=0
FAILED=0
echo -e "${BLUE}=======================================${NC}"
echo -e "${BLUE} URL 模式金鑰和 URL 索引測試${NC}"
echo -e "${BLUE}=======================================${NC}"
echo ""
# 測試函數
run_test() {
local test_name="$1"
local command="$2"
local expected="$3"
local allow_fail="$4"
echo -e "${YELLOW}[測試] $test_name${NC}"
echo "執行: $command"
if output=$(eval $command 2>&1); then
if [[ "$output" == *"$expected"* ]]; then
echo -e "${GREEN}✓ 通過${NC}"
((PASSED++))
else
if [[ "$allow_fail" == "true" ]]; then
echo -e "${YELLOW}⚠ 預期失敗${NC}"
((PASSED++))
else
echo -e "${RED}✗ 失敗 - 輸出不符合預期${NC}"
echo "預期包含: $expected"
echo "實際輸出: $output"
((FAILED++))
fi
fi
else
echo -e "${RED}✗ 失敗 - 命令執行錯誤${NC}"
echo "錯誤輸出: $output"
((FAILED++))
fi
echo ""
}
# 測試 URL 指定為 https://example.com/nfc 的 CMAC
EXAMPLE_URL="https://example.com/nfc?uid=0456735AD51F90&ctr=0000B1&cmac=C2DEEE0FF07E7EC4"
NFC_URL="https://nodered.contree.app/nfc?uid=0456735AD51F90&ctr=0000B1&cmac=C2DEEE0FF07E7EC4"
TEST_URL="https://nodered.contree.app/test?uid=0456735AD51F90&ctr=0000B1&cmac=C2DEEE0FF07E7EC4"
# 測試 1: URL 模式 + 預設金鑰(1) + 預設URL索引(1)
run_test "URL 模式 + 預設參數" \
"$EXEC verify --manual --url '$NFC_URL'" \
"已載入金鑰 #1"
# 測試 2: URL 模式 + 金鑰 2
run_test "URL 模式 + 金鑰 2 (預期失敗)" \
"$EXEC verify --manual --quiet --url '$NFC_URL' --key 2" \
"FAILED" \
"true"
# 測試 3: URL 模式 + URL 索引 2
run_test "URL 模式 + URL 索引 2" \
"$EXEC verify --manual --url '$NFC_URL' --url-index 2" \
"已載入 URL #2"
# 測試 4: URL 模式 + URL 索引 3
run_test "URL 模式 + URL 索引 3" \
"$EXEC verify --manual --url '$NFC_URL' --url-index 3" \
"已載入 URL #3"
# 測試 5: URL 模式 + 金鑰 1 + URL 索引 2
run_test "URL 模式 + 金鑰 1 + URL 索引 2" \
"$EXEC verify --manual --url '$NFC_URL' --key 1 --url-index 2" \
"已載入金鑰 #1"
# 測試 6: URL 模式 + 金鑰 2 + URL 索引 1 (預期失敗)
run_test "URL 模式 + 金鑰 2 + URL 索引 1 (預期失敗)" \
"$EXEC verify --manual --quiet --url '$NFC_URL' --key 2 --url-index 1" \
"FAILED" \
"true"
# 測試 7: URL 模式 + 金鑰 3 + URL 索引 3 (預期失敗)
run_test "URL 模式 + 金鑰 3 + URL 索引 3 (預期失敗)" \
"$EXEC verify --manual --quiet --url '$NFC_URL' --key 3 --url-index 3" \
"FAILED" \
"true"
# 測試 8: 參數順序測試 (key 在前)
run_test "參數順序測試 (key 在前)" \
"$EXEC verify --manual --key 1 --url-index 2 --url '$NFC_URL'" \
"已載入金鑰 #1"
# 測試 9: 參數順序測試 (url-index 在前)
run_test "參數順序測試 (url-index 在前)" \
"$EXEC verify --manual --url-index 3 --key 1 --url '$NFC_URL'" \
"已載入 URL #3"
# 測試 10: 靜默模式組合測試
run_test "靜默模式組合測試" \
"$EXEC verify --manual --quiet --key 1 --url-index 1 --url '$NFC_URL'" \
"SUCCEED"
# 顯示測試結果
echo -e "${BLUE}=======================================${NC}"
echo -e "${BLUE} 測試結果${NC}"
echo -e "${BLUE}=======================================${NC}"
echo -e "${GREEN}通過: $PASSED${NC}"
echo -e "${RED}失敗: $FAILED${NC}"
echo ""
if [[ $FAILED -eq 0 ]]; then
echo -e "${GREEN}🎉 所有 URL 模式參數組合測試都通過了!${NC}"
echo -e "${GREEN}✅ --key 和 --url-index 參數在 URL 模式下正常工作${NC}"
exit 0
else
echo -e "${RED}❌ 有測試失敗,請檢查問題${NC}"
exit 1
fi