94 lines
5.4 KiB
Bash
Executable File
94 lines
5.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
ROOT="${ROOT:-/var/www/dhv2.korexlabs.com}"
|
|
cd "$ROOT"
|
|
DB_SERVICE="${DB_SERVICE:-db}"
|
|
API_URL="${API_URL:-http://127.0.0.1:3101/api/v3}"
|
|
|
|
psql_app() {
|
|
docker compose exec -T "$DB_SERVICE" sh -lc \
|
|
'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -At -v ON_ERROR_STOP=1' <<<"$1"
|
|
}
|
|
|
|
echo "========== D5.3.3 · VERSIONES =========="
|
|
API_VERSION="$(node -p "require('./api-v3/package.json').version")"
|
|
WEB_VERSION="$(node -p "require('./web-v2/package.json').version")"
|
|
[[ "$API_VERSION" == "0.19.3-3" ]]
|
|
[[ "$WEB_VERSION" == "0.19.3-3" ]]
|
|
echo "API: $API_VERSION"
|
|
echo "WEB: $WEB_VERSION"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · MIGRACIONES =========="
|
|
MIGRATION_OUTPUT="$(docker compose --profile tools run --rm migrate npm run migration:show 2>&1)"
|
|
echo "$MIGRATION_OUTPUT"
|
|
grep -q "Pending migrations: no" <<<"$MIGRATION_OUTPUT"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · HEALTH =========="
|
|
HEALTH="$(curl -fsS "$API_URL/health")"
|
|
echo "$HEALTH"
|
|
grep -q '"version":"0.19.3-3"' <<<"$HEALTH"
|
|
grep -q '"phase":"D5.3.3"' <<<"$HEALTH"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · ENDPOINTS PROTEGIDOS =========="
|
|
CODE="$(curl -sS -o /tmp/dhv2-d533-registry.txt -w '%{http_code}' "$API_URL/source-documents")"
|
|
[[ "$CODE" == "401" ]]
|
|
echo "/source-documents sin sesión: 401 OK"
|
|
CODE="$(curl -sS -o /tmp/dhv2-d533-assets-registry.txt -w '%{http_code}' "$API_URL/assets/550e8400-e29b-41d4-a716-446655440000/registry")"
|
|
[[ "$CODE" == "401" ]]
|
|
echo "/assets/:id/registry sin sesión: 401 OK"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · MODELO =========="
|
|
echo "operational_status_type|$(psql_app "SELECT COUNT(*) FROM pg_type WHERE typname='asset_operational_status';")"
|
|
echo "assets_operational_status|$(psql_app "SELECT COUNT(*) FROM information_schema.columns WHERE table_name='assets' AND column_name='operational_status';")"
|
|
echo "organization_profiles|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='organization_profiles';")"
|
|
echo "organization_memberships|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='organization_memberships';")"
|
|
echo "source_documents|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='source_documents';")"
|
|
echo "asset_source_documents|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='asset_source_documents';")"
|
|
echo "external_identifiers|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='asset_external_identifiers';")"
|
|
echo "legal_rights|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='area_legal_rights';")"
|
|
echo "legal_right_organizations|$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name='area_legal_right_organizations';")"
|
|
echo "area_relation_role|$(psql_app "SELECT COUNT(*) FROM information_schema.columns WHERE table_name='area_company_relations' AND column_name='relation_role';")"
|
|
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM pg_type WHERE typname='asset_operational_status';")" == "1" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM information_schema.tables WHERE table_name IN ('organization_profiles','organization_memberships','source_documents','asset_source_documents','asset_external_identifiers','area_legal_rights','area_legal_right_organizations');")" == "7" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM information_schema.columns WHERE table_name='area_company_relations' AND column_name IN ('relation_role','participation_percent','legal_instrument','source_document_id');")" == "4" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM permissions WHERE code IN ('asset_registry.read','asset_registry.manage','assets.change_operational_status');")" == "3" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM asset_types WHERE code='area' AND name='Área';")" == "1" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM asset_types WHERE code='empresa' AND name='Organización';")" == "1" ]]
|
|
|
|
echo
|
|
echo "========== D5.3.3 · INTEGRIDAD =========="
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM pg_trigger WHERE tgname IN ('trg_organization_profiles_role','trg_organization_memberships_role','trg_area_legal_rights_role','trg_area_legal_right_org_role') AND NOT tgisinternal;")" == "4" ]]
|
|
[[ "$(psql_app "SELECT COUNT(*) FROM pg_indexes WHERE indexname IN ('uq_organization_memberships_active_role','uq_area_company_relations_active_role','uq_area_legal_right_org_active_role','uq_asset_external_identifiers_active_namespace_value');")" == "4" ]]
|
|
echo "Roles, vigencias e identificadores protegidos: OK"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · SOURCE / DASHBOARD =========="
|
|
grep -q "OrganizationKind.UTE" api-v3/src/asset-master/asset-registry.service.ts
|
|
grep -q "relation_role = 'OPERATOR'" api-v3/src/asset-master/assets.service.ts
|
|
grep -q "Estado operativo" web-v2/src/pages/AssetEditorPage.tsx
|
|
grep -q "Organización operadora" web-v2/src/pages/AssetEditorPage.tsx
|
|
grep -q "0.19.3-3" web-v2/src/config/version.ts
|
|
bash -n scripts/dev-clean-demo.sh
|
|
echo "Semántica Área / Organización y estado operativo: OK"
|
|
|
|
echo
|
|
echo "========== D5.3.3 · DEMO =========="
|
|
DEMO_COUNT="$(psql_app "SELECT COUNT(*) FROM assets WHERE code LIKE 'DEV-DEMO-%';")"
|
|
echo "Activos DEV-DEMO actuales: $DEMO_COUNT"
|
|
if [[ "$DEMO_COUNT" -gt "0" ]]; then
|
|
echo "El demo previo fue preservado por la migración. Puede limpiarse y resembrarse después del deploy para aplicar documento fuente y estado operativo."
|
|
fi
|
|
|
|
echo
|
|
echo "========== D5.3.3 · CONTENEDORES =========="
|
|
docker compose ps -a
|
|
|
|
echo
|
|
echo "ACEPTACIÓN DE FASE D5.3.3: OK"
|