bmc_hub/test_sag_new_endpoints.sh
Christian 29acdf3e01 Add tests for new SAG module endpoints and module deactivation
- Implement test script for new SAG module endpoints BE-003 (Tag State Management) and BE-004 (Bulk Operations).
- Create test cases for creating, updating, and bulk operations on cases and tags.
- Add a test for module deactivation to ensure data integrity is maintained.
- Include setup and teardown for tests to clear database state before and after each test.
2026-01-31 23:16:24 +01:00

159 lines
5.0 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "========================================="