bmc_hub/keepforlater/test_sag_new_endpoints.sh
Christian a604a3cc44 Add comprehensive test suite for vTiger integration and ticket module
- Implemented test scripts for vTiger account retrieval, contact data, and modules.
- Created a detailed test suite for the ticket module, covering database schema validation, ticket number generation, prepaid card constraints, and service logic.
- Added tests for vTiger field inspection and various queries related to accounts and sales orders.
- Introduced SQL migration scripts for the ALSO Cloud Billing foundation, including import jobs, lines, and mapping tables with necessary constraints and indices.
- Enhanced workflow columns in the import lines table to support matching and validation timestamps.
2026-06-20 03:29:51 +02:00

159 lines
5.0 KiB
Bash
Executable File
Raw Permalink 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 "========================================="