125 lines
4.0 KiB
Bash
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 |