Skip to content

QA User Setup — S60Auth

Vytvoření dedikovaného QA/test usera v S60Auth pro testování authenticated endpointů.

Kdy použít

  • QA potřebuje testovat authenticated endpointy jakékoli služby (Pulse, BadWolf, BillIt...)
  • Potřeba M2M přístupu pro automatizované testy

Prerekvizity

  • SSH přístup na cílový server (hub-alfa / prod-alfa)
  • doadmin přístup k DO PG (pro grant systémového přístupu)

Postup

1. Registrace usera přes S60Auth API

# Na cílovém serveru (např. hub-alfa)
ssh root@<server> "curl -s -X POST http://127.0.0.1:3002/api/auth/register \
  -H 'Content-Type: application/json' \
  -d '{\"email\":\"<email>\",\"password\":\"<heslo>\",\"firstName\":\"<jméno>\",\"lastName\":\"<příjmení>\"}'"
  • Email konvence: qa-<služba>@s60dev.cz (např. qa-pulse@s60dev.cz)
  • Heslo: openssl rand -base64 16 | tr -d '/+=' | head -c 20
  • Response vrátí accessToken, refreshToken a user.id

2. Grant přístupu k systému

Najdi system_id cílové služby:

SELECT id, name FROM systems WHERE name ILIKE '%<služba>%';

Přidej přístup:

INSERT INTO user_system_access (id, user_id, system_id, granted_at)
VALUES (gen_random_uuid(), '<user_id>', '<system_id>', NOW());

3. Přiřazení rolí v systému

DŮLEŽITÉ: Bez tohoto kroku bude JWT obsahovat rolesBySystem: {} a authenticated endpointy vrátí 401!

-- v s60_auth_<env>
INSERT INTO user_system_roles (user_id, system_id, role_name)
VALUES ('<user_id>', '<system_id>', 'client');

Dostupné role: client (běžný uživatel), admin (plný přístup).

Po přidání role se uživatel musí znovu přihlásit — starý JWT nemá role.

4. Nastavení tieru a credits (Pulse-specific)

Pokud služba používá tier/credit systém (Pulse):

-- v s60_pulse_<env>
UPDATE clients
SET tier = 'triple', "creditsRemaining" = 100
WHERE "authUserId" = '<user_id>';

Dostupné tiery: single, double, triple.

5. Uložení credentials

mkdir -p /root/secrets/qa
cat > /root/secrets/qa/<služba>-<env>.env << EOF
QA_EMAIL=<email>
QA_PASSWORD=<heslo>
QA_USER_ID=<user_id>
AUTH_URL=https://auth.<domain>/api/auth/login
<SLUŽBA>_URL=https://<služba_url>
EOF
chmod 600 /root/secrets/qa/<služba>-<env>.env

6. Ověření (E2E)

# Login
TOKEN=$(curl -s -X POST http://127.0.0.1:3002/api/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"<email>","password":"<heslo>"}' | python3 -c 'import sys,json;print(json.load(sys.stdin)["accessToken"])')

# Test authenticated endpoint
curl -s http://127.0.0.1:<port>/<endpoint> -H "Authorization: Bearer $TOKEN"

Poznámky

  • user_system_access = přístup k systému (login allowed)
  • user_system_roles = role v systému (permissions pro JWT)
  • Bez role v user_system_roles auth guard odmítne — roles v JWT prázdné
  • Pulse system_id je stejný na hub i prod: 15912518-c5f1-4926-bf6e-b16948d4c585
  • API key auth (X-Api-Key) je jiný flow — validace přes /api/api-keys/validate, vyžaduje system_id v api_keys tabulce

Bezpečnost

  • Credentials NIKDY přes Relay API (plaintext archiv)
  • Hesla pouze v /root/secrets/qa/ (chmod 600)
  • Na produ: pouze GET endpointy (read-only)
  • Notifikace přes Relay bez hesla — odkaz na secrets soubor

Existující QA uživatelé

Služba Env Email User ID Secrets
Pulse hub qa-pulse@s60dev.cz d6195555-bee4-4c70-8c5f-af3b6e438b3b /root/secrets/qa/pulse-hub.env