File size: 3,012 Bytes
cd9bca9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
"""
API 測試腳本
用於測試 LINE Bot 的各種功能
"""

import requests
import json
from typing import Dict, Any

class APITester:
    def __init__(self, base_url: str = "http://localhost:7860"):
        self.base_url = base_url
    
    def test_health_check(self):
        """測試健康檢查端點"""
        try:
            response = requests.get(f"{self.base_url}/health")
            print(f"Health Check: {response.status_code}")
            print(f"Response: {response.json()}")
            return response.status_code == 200
        except Exception as e:
            print(f"Health check failed: {e}")
            return False
    
    def test_root_endpoint(self):
        """測試根端點"""
        try:
            response = requests.get(f"{self.base_url}/")
            print(f"Root Endpoint: {response.status_code}")
            print(f"Response: {response.json()}")
            return response.status_code == 200
        except Exception as e:
            print(f"Root endpoint test failed: {e}")
            return False
    
    def simulate_line_message(self, message: str, user_id: str = "test_user"):
        """模擬 LINE 訊息"""
        # 這是一個簡化的 LINE webhook 格式
        webhook_data = {
            "events": [
                {
                    "type": "message",
                    "message": {
                        "type": "text",
                        "text": message
                    },
                    "source": {
                        "type": "user",
                        "userId": user_id
                    },
                    "replyToken": "test_reply_token"
                }
            ]
        }
        
        try:
            response = requests.post(
                f"{self.base_url}/webhook",
                json=webhook_data,
                headers={"Content-Type": "application/json"}
            )
            print(f"LINE Message Test: {response.status_code}")
            print(f"Message: {message}")
            return response.status_code == 200
        except Exception as e:
            print(f"LINE message test failed: {e}")
            return False

def run_tests():
    """執行所有測試"""
    tester = APITester()
    
    print("=== API 測試開始 ===\n")
    
    # 測試基本端點
    print("1. 測試根端點...")
    tester.test_root_endpoint()
    print()
    
    print("2. 測試健康檢查...")
    tester.test_health_check()
    print()
    
    # 測試各種訊息
    test_messages = [
        "查詢用戶 張三",
        "找訂單 ORD001",
        "查詢商品 iPhone",
        "價格 1000 到 5000 的商品",
        "統計用戶數量",
        "幫助"
    ]
    
    print("3. 測試 LINE 訊息處理...")
    for i, message in enumerate(test_messages, 1):
        print(f"3.{i} 測試訊息: {message}")
        tester.simulate_line_message(message)
        print()
    
    print("=== 測試完成 ===")

if __name__ == "__main__":
    run_tests()