File size: 2,143 Bytes
395651c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/bin/bash
# Full API integration (CI-style): eager Celery + mock video + full HTTP suite.
LOG_FILE="full_api_suite.log"
REPORT_FILE="full_api_test_report.md"
JSON_RESULTS="temp_suite_results.json"
JUNIT="pytest_api_suite.xml"

echo "=== Starting Full API Suite Test ($(date)) ===" >"$LOG_FILE"

trap 'echo "[INFO] Cleaning up processes..."; kill $SERVER_PID 2>/dev/null; sleep 1' EXIT

echo "[INFO] Starting Backend Server (EAGER + MOCK_VIDEO)..." | tee -a "$LOG_FILE"
export ALLOW_TEST_BYPASS=true
export LOG_LEVEL=info
export CELERY_TASK_ALWAYS_EAGER=true
export CELERY_RESULT_BACKEND=rpc://
export MOCK_VIDEO=true
PYTHONPATH=. venv/bin/python -m uvicorn app.main:app --port 8000 >server_debug.log 2>&1 &
SERVER_PID=$!

echo "[INFO] Waiting for server (PID: $SERVER_PID)..." | tee -a "$LOG_FILE"
for i in {1..20}; do
  if curl -s http://localhost:8000/ >/dev/null; then
    echo "[INFO] Server is READY." | tee -a "$LOG_FILE"
    break
  fi
  sleep 2
done

echo "[INFO] Preparing fresh test data..." | tee -a "$LOG_FILE"
PREP_OUTPUT=$(PYTHONPATH=. venv/bin/python scripts/prepare_api_test.py)
export TEST_USER_ID=$(echo "$PREP_OUTPUT" | grep "RESULT:USER_ID=" | cut -d'=' -f2)
export TEST_SESSION_ID=$(echo "$PREP_OUTPUT" | grep "RESULT:SESSION_ID=" | cut -d'=' -f2)

if [ -z "$TEST_USER_ID" ]; then
  echo "[ERROR] Failed to prepare test data." | tee -a "$LOG_FILE"
  exit 1
fi

echo "[INFO] Executing API tests (smoke + full suite)..." | tee -a "$LOG_FILE"
PYTHONPATH=. venv/bin/python -m pytest tests/test_api_real_e2e.py tests/test_api_full_suite.py \
  -m "real_api" -s --tb=short --junitxml="$JUNIT" >>"$LOG_FILE" 2>&1
TEST_EXIT_CODE=$?

echo "[INFO] Generating Markdown Report..." | tee -a "$LOG_FILE"
if [ -f "$JSON_RESULTS" ]; then
  PYTHONPATH=. venv/bin/python scripts/generate_report.py "$JSON_RESULTS" "$REPORT_FILE" "$JUNIT"
else
  echo "[WARN] $JSON_RESULTS not found" | tee -a "$LOG_FILE"
fi

echo "==========================================" | tee -a "$LOG_FILE"
echo "DONE. Check $REPORT_FILE for results." | tee -a "$LOG_FILE"
echo "==========================================" | tee -a "$LOG_FILE"

exit $TEST_EXIT_CODE