-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathsetup-wiremock-runner.sh
More file actions
executable file
·75 lines (59 loc) · 2.18 KB
/
setup-wiremock-runner.sh
File metadata and controls
executable file
·75 lines (59 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
# Setup WireMock Runner for LocalStack
set -e
MOCK_API_NAME="${MOCK_API_NAME:-wiremock}"
MOCK_API_PORT="${MOCK_API_PORT:-8080}"
WIREMOCK_DIR="${WIREMOCK_DIR:-.wiremock}"
STUBS_URL="${STUBS_URL:-https://library.wiremock.org/catalog/api/p/personio.de/personio-de-personnel/personio.de-personnel-stubs.json}"
echo "=== WireMock Runner Setup ==="
# Check prerequisites
if ! command -v wiremock &> /dev/null; then
echo "Error: WireMock CLI not installed. Run: npm install -g wiremock"
exit 1
fi
if ! wiremock mock-apis list &> /dev/null; then
echo "Error: Not logged in. Run: wiremock login"
exit 1
fi
echo "✓ CLI authenticated"
# Create Mock API
echo "Creating Mock API '${MOCK_API_NAME}'..."
wiremock mock-apis create "${MOCK_API_NAME}" 2>&1 || echo "Note: May already exist"
wiremock mock-apis list
echo ""
echo "Enter Mock API ID:"
read -r MOCK_API_ID
[ -z "$MOCK_API_ID" ] && { echo "Error: Mock API ID required"; exit 1; }
# Create config
mkdir -p "${WIREMOCK_DIR}/stubs/${MOCK_API_NAME}/mappings"
cat > "${WIREMOCK_DIR}/wiremock.yaml" << EOF
services:
${MOCK_API_NAME}:
type: 'REST'
name: '${MOCK_API_NAME}'
port: ${MOCK_API_PORT}
path: '/'
cloud_id: '${MOCK_API_ID}'
EOF
echo "✓ Created ${WIREMOCK_DIR}/wiremock.yaml"
# Download stubs
TMP_STUBS_FILE="/tmp/wiremock-stubs.json"
curl -s -o "$TMP_STUBS_FILE" "$STUBS_URL"
if [ -f "$TMP_STUBS_FILE" ] && command -v jq &> /dev/null; then
MAPPING_COUNT=$(jq '.mappings | length' "$TMP_STUBS_FILE" 2>/dev/null || jq 'length' "$TMP_STUBS_FILE" 2>/dev/null || echo "0")
if [ "$MAPPING_COUNT" != "0" ] && [ "$MAPPING_COUNT" != "null" ]; then
for i in $(seq 0 $((MAPPING_COUNT - 1))); do
jq ".mappings[$i] // .[$i]" "$TMP_STUBS_FILE" > "${WIREMOCK_DIR}/stubs/${MOCK_API_NAME}/mappings/mapping-$i.json" 2>/dev/null
done
echo "✓ Extracted ${MAPPING_COUNT} stubs"
fi
fi
echo ""
echo "=== Setup Complete ==="
echo ""
echo "Start LocalStack with:"
echo " LOCALSTACK_WIREMOCK_API_TOKEN=\"your-token\" \\"
echo " LOCALSTACK_WIREMOCK_CONFIG_DIR=\"$(pwd)\" \\"
echo " localstack start"
echo ""
echo "WireMock available at: http://wiremock.localhost.localstack.cloud:4566"