رفع الملفات إلى "/"
هذا الالتزام موجود في:
75
test.sh
Normal file
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"
|
المرجع في مشكلة جديدة
حظر مستخدم