رفع الملفات إلى "/"

هذا الالتزام موجود في:
2025-10-04 14:32:44 +00:00
التزام da5a008931
4 ملفات معدلة مع 492 إضافات و0 حذوفات

75
test.sh Normal file
عرض الملف

@@ -0,0 +1,75 @@
#!/usr/bin/env bash
# test_api.sh — íÌÑøÈ ÇáÜ API æíÏæøä ÇáäÊÇÆÌ Ýí test_results.log
BASE_URL=${BASE_URL:-http://localhost:5000}
LOGFILE="./test_results.log"
timestamp(){ date +"%Y-%m-%d %H:%M:%S"; }
echo "=== TEST RUN $(timestamp) ===" >> "$LOGFILE"
run(){
method=$1; url=$2; data=$3
if [ -n "$data" ]; then
resp=$(curl -s -w "\n%{http_code}" -X "$method" -H "Content-Type: application/json" -d "$data" "$url")
else
resp=$(curl -s -w "\n%{http_code}" -X "$method" "$url")
fi
body=$(echo "$resp" | sed '$d')
code=$(echo "$resp" | tail -n1)
echo "[$(timestamp)] $method $url -> $code" >> "$LOGFILE"
echo "$body" >> "$LOGFILE"
echo "----" >> "$LOGFILE"
}
# 1. health
run GET "$BASE_URL/health"
# 2. list books (should be empty)
run GET "$BASE_URL/books"
# 3. add books
b1='{"id":1,"title":"Clean Code","author":"Robert C. Martin","year":2008,"copies":1}'
b2='{"id":2,"title":"The Pragmatic Programmer","author":"Andrew Hunt","year":1999,"copies":2}'
run POST "$BASE_URL/books" "$b1"
run POST "$BASE_URL/books" "$b2"
# 4. add users
u1='{"id":10,"name":"Mustafa","email":"m@example.com"}'
u2='{"id":11,"name":"Sara","email":"s@example.com"}'
run POST "$BASE_URL/users" "$u1"
run POST "$BASE_URL/users" "$u2"
# 5. borrow book id=1 by user 10 (should succeed)
loan1='{"user_id":10,"book_id":1}'
run POST "$BASE_URL/loans" "$loan1"
# 6. borrow same book id=1 again -> copies=1 so should fail (409)
run POST "$BASE_URL/loans" "$loan1"
# 7. borrow book id=2 twice (copies=2) by two users -> both succeed
loan2='{"user_id":11,"book_id":2}'
run POST "$BASE_URL/loans" "$loan2"
run POST "$BASE_URL/loans" '{"user_id":10,"book_id":2}'
# 8. list active loans
run GET "$BASE_URL/loans?active=true"
# 9. return loan id 1
run PUT "$BASE_URL/loans/1/return"
# 10. try returning again (should get 400)
run PUT "$BASE_URL/loans/1/return"
# 11. delete book 999 (not exist -> 404)
run DELETE "$BASE_URL/books/999"
# 12. update book 2
run PUT "$BASE_URL/books/2" '{"copies":1,"year":2000}'
# 13. list books & loans
run GET "$BASE_URL/books"
run GET "$BASE_URL/loans"
echo "=== END TEST RUN $(timestamp) ===" >> "$LOGFILE"
echo "" >> "$LOGFILE"