159 lines
5.0 KiB
Bash
159 lines
5.0 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# Test script for new SAG module endpoints: BE-003 and BE-004
|
|||
|
|
|
|||
|
|
BASE_URL="http://localhost:8001/api/v1/sag"
|
|||
|
|
|
|||
|
|
echo "========================================="
|
|||
|
|
echo "Testing SAG Module New Endpoints"
|
|||
|
|
echo "========================================="
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# ==============================================================================
|
|||
|
|
# BE-003: Tag State Management
|
|||
|
|
# ==============================================================================
|
|||
|
|
|
|||
|
|
echo "📋 BE-003: Testing Tag State Management"
|
|||
|
|
echo "----------------------------------------"
|
|||
|
|
|
|||
|
|
# Test 1: Create a case with a tag
|
|||
|
|
echo "1️⃣ Creating test case..."
|
|||
|
|
CASE_RESPONSE=$(curl -s -X POST "$BASE_URL/cases" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"titel": "Test Case for Tag State",
|
|||
|
|
"beskrivelse": "Testing tag state transitions",
|
|||
|
|
"status": "open",
|
|||
|
|
"template_key": "standard"
|
|||
|
|
}')
|
|||
|
|
|
|||
|
|
CASE_ID=$(echo $CASE_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('id', ''))")
|
|||
|
|
echo " ✅ Case created with ID: $CASE_ID"
|
|||
|
|
|
|||
|
|
# Test 2: Add a tag to the case
|
|||
|
|
echo ""
|
|||
|
|
echo "2️⃣ Adding tag to case..."
|
|||
|
|
TAG_RESPONSE=$(curl -s -X POST "$BASE_URL/cases/$CASE_ID/tags" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"tag_navn": "needs_review",
|
|||
|
|
"state": "open"
|
|||
|
|
}')
|
|||
|
|
|
|||
|
|
TAG_ID=$(echo $TAG_RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('id', ''))")
|
|||
|
|
echo " ✅ Tag created with ID: $TAG_ID (state: open)"
|
|||
|
|
|
|||
|
|
# Test 3: Close the tag
|
|||
|
|
echo ""
|
|||
|
|
echo "3️⃣ Closing tag (state: open → closed)..."
|
|||
|
|
curl -s -X PATCH "$BASE_URL/cases/$CASE_ID/tags/$TAG_ID/state" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"state": "closed"}' | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 4: Reopen the tag
|
|||
|
|
echo "4️⃣ Reopening tag (state: closed → open)..."
|
|||
|
|
curl -s -X PATCH "$BASE_URL/cases/$CASE_ID/tags/$TAG_ID/state" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"state": "open"}' | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 5: Invalid state
|
|||
|
|
echo "5️⃣ Testing invalid state (should fail with 400)..."
|
|||
|
|
curl -s -X PATCH "$BASE_URL/cases/$CASE_ID/tags/$TAG_ID/state" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"state": "invalid"}' | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 6: Non-existent tag
|
|||
|
|
echo "6️⃣ Testing non-existent tag (should fail with 404)..."
|
|||
|
|
curl -s -X PATCH "$BASE_URL/cases/$CASE_ID/tags/99999/state" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"state": "closed"}' | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# ==============================================================================
|
|||
|
|
# BE-004: Bulk Operations
|
|||
|
|
# ==============================================================================
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "========================================="
|
|||
|
|
echo "📦 BE-004: Testing Bulk Operations"
|
|||
|
|
echo "----------------------------------------"
|
|||
|
|
|
|||
|
|
# Test 7: Create multiple cases for bulk operations
|
|||
|
|
echo "1️⃣ Creating 3 test cases for bulk operations..."
|
|||
|
|
CASE_IDS=()
|
|||
|
|
for i in 1 2 3; do
|
|||
|
|
RESPONSE=$(curl -s -X POST "$BASE_URL/cases" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"titel\": \"Bulk Test Case $i\",
|
|||
|
|
\"beskrivelse\": \"Case for bulk operations testing\",
|
|||
|
|
\"status\": \"open\",
|
|||
|
|
\"template_key\": \"standard\"
|
|||
|
|
}")
|
|||
|
|
BULK_CASE_ID=$(echo $RESPONSE | python3 -c "import sys, json; print(json.load(sys.stdin).get('id', ''))")
|
|||
|
|
CASE_IDS+=($BULK_CASE_ID)
|
|||
|
|
echo " ✅ Created case ID: $BULK_CASE_ID"
|
|||
|
|
done
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 8: Bulk update status
|
|||
|
|
echo "2️⃣ Bulk updating status to 'in_progress'..."
|
|||
|
|
curl -s -X POST "$BASE_URL/cases/bulk" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"case_ids\": [${CASE_IDS[0]}, ${CASE_IDS[1]}, ${CASE_IDS[2]}],
|
|||
|
|
\"action\": \"update_status\",
|
|||
|
|
\"params\": {
|
|||
|
|
\"status\": \"in_progress\"
|
|||
|
|
}
|
|||
|
|
}" | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 9: Bulk add tag
|
|||
|
|
echo "3️⃣ Bulk adding 'urgent' tag to all cases..."
|
|||
|
|
curl -s -X POST "$BASE_URL/cases/bulk" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"case_ids\": [${CASE_IDS[0]}, ${CASE_IDS[1]}, ${CASE_IDS[2]}],
|
|||
|
|
\"action\": \"add_tag\",
|
|||
|
|
\"params\": {
|
|||
|
|
\"tag_naam\": \"urgent\"
|
|||
|
|
}
|
|||
|
|
}" | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 10: Bulk close all
|
|||
|
|
echo "4️⃣ Bulk closing all cases..."
|
|||
|
|
curl -s -X POST "$BASE_URL/cases/bulk" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"case_ids\": [${CASE_IDS[0]}, ${CASE_IDS[1]}, ${CASE_IDS[2]}],
|
|||
|
|
\"action\": \"close_all\"
|
|||
|
|
}" | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 11: Invalid action
|
|||
|
|
echo "5️⃣ Testing invalid action (should fail with 400)..."
|
|||
|
|
curl -s -X POST "$BASE_URL/cases/bulk" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"case_ids\": [${CASE_IDS[0]}],
|
|||
|
|
\"action\": \"delete_all\"
|
|||
|
|
}" | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# Test 12: Missing case_ids
|
|||
|
|
echo "6️⃣ Testing missing case_ids (should fail with 400)..."
|
|||
|
|
curl -s -X POST "$BASE_URL/cases/bulk" \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d "{
|
|||
|
|
\"action\": \"close_all\"
|
|||
|
|
}" | python3 -m json.tool
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
echo "========================================="
|
|||
|
|
echo "✅ All tests completed!"
|
|||
|
|
echo "========================================="
|