#!/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