Files
AIOA/scripts/test-ios-mvp.sh
T
2026-07-18 20:54:23 +08:00

54 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
keycloak_url="${KEYCLOAK_URL:-http://localhost:8081}"
backend_url="${BACKEND_URL:-http://localhost:8080}"
device_id="${IOS_DEVICE_ID:-$(xcrun simctl list devices booted -j | jq -r '.devices[][] | select(.state == "Booted") | .udid' | head -1)}"
if [[ -z "${device_id}" ]]; then
echo 'No booted iOS simulator. Boot one or set IOS_DEVICE_ID.' >&2
exit 1
fi
curl --fail --silent "${backend_url}/actuator/health" >/dev/null
token() {
curl --fail --silent --show-error \
-X POST "${keycloak_url}/realms/aioa/protocol/openid-connect/token" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode client_id=aioa-mobile \
--data-urlencode grant_type=password \
--data-urlencode "username=$1" \
--data-urlencode "password=$2" | jq -r .access_token
}
run_role() {
local role="$1"
local access_token="$2"
local employee_access_token="$3"
echo "Running iOS MVP scenario: ${role}"
(
cd "${root_dir}/mobile"
flutter test integration_test/mvp_business_test.dart \
-d "${device_id}" \
--dart-define="AIOA_E2E_ACCESS_TOKEN=${access_token}" \
--dart-define="AIOA_E2E_EMPLOYEE_TOKEN=${employee_access_token}" \
--dart-define="AIOA_E2E_ROLE=${role}" \
--dart-define="AIOA_API_BASE_URL=${backend_url}/api/v1"
)
}
employee_token="$(token employee 'Employee123!')"
run_role employee "${employee_token}" "${employee_token}"
employee_token="$(token employee 'Employee123!')"
manager_token="$(token manager 'Manager123!')"
run_role manager "${manager_token}" "${employee_token}"
admin_token="$(token admin 'Admin123!')"
run_role admin "${admin_token}" "${employee_token}"
echo 'All iOS MVP frontend business scenarios passed.'