54 lines
1.8 KiB
Bash
Executable File
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.'
|