T
Tenanto
Documentation / Testing Manual

Testing Manual

Updated Jan 25, 2026

Manuální Testovací Průvodce pro CodeCanyon

Tento průvodce obsahuje kompletní postup manuálního testování aplikace Tenanto před odesláním na CodeCanyon marketplace.


Obsah

  1. Příprava prostředí
  2. System Admin Panel
  3. Tenant Panel
  4. Tenant Isolation Test
  5. Billing & Stripe
  6. API Testování
  7. Email Testování
  8. Code Quality
  9. Security Checklist
  10. Finální Checklist

1. Příprava prostředí

1.1 Fresh Install

# Reset databáze
docker compose exec app php artisan migrate:fresh --seed

# Vyčisti cache
docker compose exec app php artisan optimize:clear

# Zkontroluj APP_DEBUG
docker compose exec app grep APP_DEBUG .env

1.2 DNS Setup (Windows hosts file)

Soubor: C:\Windows\System32\drivers\etc\hosts

127.0.0.1 tenanto.local
127.0.0.1 admin.tenanto.local
127.0.0.1 demo.tenanto.local
127.0.0.1 acme.tenanto.local
127.0.0.1 test.tenanto.local

1.3 Výchozí přihlašovací údaje

Panel URL Email Heslo
System Admin http://admin.tenanto.local [email protected] password
Demo Tenant Owner http://demo.tenanto.local/app [email protected] password
Demo Tenant Admin http://demo.tenanto.local/app [email protected] password
Demo Tenant Member http://demo.tenanto.local/app [email protected] password

2. System Admin Panel

2.1 Přihlášení

2.2 Dashboard

2.3 Tenants Resource

2.4 Vytvoření nového Tenanta

2.5 Users Resource

2.6 Licenses Resource

2.7 Odhlášení


3. Tenant Panel

3.1 Přihlášení jako Owner

3.2 Dashboard

3.3 Projects Resource

3.4 Tasks Resource

3.5 Users Resource (Tenant)

3.6 Teams Resource

3.7 Billing

3.8 Profile

3.9 Odhlášení


4. Tenant Isolation Test (KRITICKÉ!)

Toto je nejdůležitější test - data se nesmí míchat mezi tenanty!

4.1 Příprava

# Ujisti se že existuje druhý tenant
docker compose exec app php artisan tenant:create "Test Company" test

Přidej do hosts: 127.0.0.1 test.tenanto.local

4.2 Test izolace dat

  1. Vytvoř data na demo tenantu:

  2. Ověř že test tenant je nevidí:

    • Přihlas se na http://test.tenanto.local/app (jako owner)
    • Jdi na Projects
    • NESMÍŠ vidět "DEMO SECRET PROJECT"!
    • Jdi na Tasks
    • NESMÍŠ vidět "DEMO SECRET TASK"!
  3. Test přímého URL přístupu:

    • Zjisti ID projektu z demo tenantu (z URL nebo DB)
    • Na test tenantu zkus přímý přístup: /app/projects/{id}
    • Musí vrátit 404 nebo redirect, NE data jiného tenantu!

4.3 API Isolation Test

# 1. Získej token pro demo tenant
DEMO_TOKEN=$(curl -s -X POST http://demo.tenanto.local/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"password"}' | jq -r '.data.token')

echo "Demo token: $DEMO_TOKEN"

# 2. Tento token NESMÍ fungovat na jiném tenantu
curl -i http://test.tenanto.local/api/v1/projects \
  -H "Authorization: Bearer $DEMO_TOKEN"

# Očekávaný výsledek: 401 Unauthorized

5. Billing & Stripe

5.1 Konfigurace Stripe (Test Mode)

V .env nastav Stripe test klíče:

STRIPE_KEY=pk_test_xxxxx
STRIPE_SECRET=sk_test_xxxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxxx

# Vytvoř produkty ve Stripe Dashboard a vlož price IDs:
STRIPE_PRICE_BASIC=price_xxxxx
STRIPE_PRICE_PRO=price_xxxxx
STRIPE_PRICE_ENTERPRISE=price_xxxxx

5.2 Test Billing Flow

  1. Zobrazení plánů:

  2. Subscription checkout:

    • Vyber plán (Basic)
    • Klikni na "Subscribe"
    • Přesměrování na Stripe Checkout
    • Použij test kartu: 4242 4242 4242 4242
    • Expiration: libovolné datum v budoucnosti
    • CVV: libovolné 3 číslice
    • Dokonči platbu
  3. Ověření subscription:

    • Přesměrování zpět do aplikace
    • Subscription je aktivní
    • Plan info se zobrazuje správně
  4. Billing portal:

    • Klikni na "Manage Subscription"
    • Otevře se Stripe Customer Portal
    • Můžeš změnit platební metodu
    • Můžeš zrušit subscription

5.3 Test karty

Karta Výsledek
4242 4242 4242 4242 Úspěšná platba
4000 0000 0000 0002 Zamítnuto
4000 0000 0000 9995 Nedostatek prostředků

6. API Testování

6.1 Authentication

# Login
curl -X POST http://demo.tenanto.local/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"password"}'

# Očekávaný výsledek: {"success":true,"data":{"token":"xxx",...}}

6.2 Protected Endpoints

TOKEN="xxx"  # token z login response

# Get current user
curl http://demo.tenanto.local/api/v1/auth/me \
  -H "Authorization: Bearer $TOKEN"

# List projects
curl http://demo.tenanto.local/api/v1/projects \
  -H "Authorization: Bearer $TOKEN"

# Create project
curl -X POST http://demo.tenanto.local/api/v1/projects \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"API Test Project","description":"Created via API"}'

6.3 Rate Limiting

# Rychle odešli 70 requestů
for i in {1..70}; do
  curl -s -o /dev/null -w "%{http_code}\n" \
    -H "Authorization: Bearer $TOKEN" \
    http://demo.tenanto.local/api/v1/projects
done

6.4 Logout

curl -X POST http://demo.tenanto.local/api/v1/auth/logout \
  -H "Authorization: Bearer $TOKEN"

7. Email Testování

7.1 Mailhog Setup

Mailhog běží na: http://localhost:8025

7.2 Test Registration Email

  1. Zaregistruj nového uživatele
  2. Zkontroluj Mailhog - přišel verification email
  3. Klikni na verification link
  4. Email je ověřen

7.3 Test Password Reset

  1. Jdi na login → "Forgot password"
  2. Zadej email existujícího uživatele
  3. Zkontroluj Mailhog - přišel reset email
  4. Klikni na reset link
  5. Nastav nové heslo
  6. Přihlas se novým heslem

7.4 Test Billing Notifications

  1. Vytvoř subscription (Stripe)
  2. Zkontroluj Mailhog - přišel confirmation email
  3. Zruš subscription
  4. Přišel cancellation email

8. Code Quality

8.1 PHPStan

docker compose exec app ./vendor/bin/phpstan analyse

8.2 Pint (Code Style)

docker compose exec app ./vendor/bin/pint --test

8.3 Testy

docker compose exec app php artisan test

9. Security Checklist

9.1 Hardcoded Credentials

# Hledej hardcoded hesla
docker compose exec app grep -r "password" --include="*.php" app/ | grep -v "password_hash\|password_confirmation\|->password\|Password"

9.2 Debug Statements

# Hledej dd() a dump()
docker compose exec app grep -r "dd(\|dump(\|var_dump(" --include="*.php" app/ routes/

9.3 TODO/FIXME

docker compose exec app grep -r "TODO\|FIXME\|XXX\|HACK" --include="*.php" app/

9.4 Environment

# .env.example má správné defaults
cat .env.example | grep -E "APP_DEBUG|APP_ENV"

9.5 Sensitive Files


10. Finální Checklist

Pre-Submission

Dokumentace

Package


Poznámky k testování

Při nalezení bugu:

  1. Zapiš přesné kroky k reprodukci
  2. Zapiš očekávané vs. skutečné chování
  3. Přidej screenshot pokud relevantní
  4. Oprav a otestuj znovu

Historie testování

Datum Verze Tester Výsledek

Poslední aktualizace: 2025-12-05