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
- Příprava prostředí
- System Admin Panel
- Tenant Panel
- Tenant Isolation Test
- Billing & Stripe
- API Testování
- Email Testování
- Code Quality
- Security Checklist
- 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 | 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í
- Otevři http://admin.tenanto.local
- Zobrazí se přihlašovací formulář
- Přihlas se:
[email protected]/password - Úspěšné přesměrování na dashboard
2.2 Dashboard
- Zobrazují se statistiky (počet tenantů, uživatelů)
- Žádné PHP errory nebo warnings
2.3 Tenants Resource
- Navigace → Tenants
- Zobrazí se seznam tenantů (demo, acme)
- Klikni na "View" u demo tenanta
- Zobrazí se detail s informacemi
- Klikni na "Edit"
- Uprav název a ulož
- Změna se projeví
2.4 Vytvoření nového Tenanta
- Tenants → Create New
- Vyplň: Name = "Test Company", Slug = "test"
- Ulož
- Tenant se vytvoří
- Přidej do hosts:
127.0.0.1 test.tenanto.local
2.5 Users Resource
- Navigace → Users
- Zobrazí se seznam všech uživatelů
- Filtrování podle tenantu funguje
- Detail uživatele se zobrazí
2.6 Licenses Resource
- Navigace → Licenses
- Zobrazí se správa licencí
- Vytvoření nové licence funguje
2.7 Odhlášení
- Klikni na profil → Logout
- Přesměrování na login stránku
3. Tenant Panel
3.1 Přihlášení jako Owner
- Otevři http://demo.tenanto.local/app
- Zobrazí se přihlašovací formulář
- Přihlas se:
[email protected]/password - Úspěšné přesměrování na dashboard
3.2 Dashboard
- Zobrazují se widgety (Projects Overview, Recent Tasks)
- Statistiky odpovídají datům v DB
3.3 Projects Resource
- Navigace → Projects
- Zobrazí se seznam projektů
- Vytvoř nový projekt: "Test Project"
- Projekt se zobrazí v seznamu
- Uprav projekt - změň název
- Archivuj projekt
- Obnov projekt z archivu
3.4 Tasks Resource
- Navigace → Tasks
- Zobrazí se seznam úkolů
- Vytvoř nový úkol v projektu
- Úkol se zobrazí
- Změň status na "Completed"
- Status se aktualizuje
3.5 Users Resource (Tenant)
- Navigace → Users
- Zobrazí se seznam uživatelů tohoto tenantu
- Vytvoř nového uživatele
- Přiřaď roli (admin/member)
- Uživatel se vytvoří
3.6 Teams Resource
- Navigace → Teams
- Vytvoř nový tým
- Přidej členy do týmu
- Změň role členů
3.7 Billing
- Navigace → Billing
- Zobrazí se billing stránka
- Zobrazí se dostupné plány
- (Stripe test - viz sekce 5)
3.8 Profile
- Klikni na profil
- Změň jméno
- Změň heslo
- Změny se uloží
3.9 Odhlášení
- Logout funguje
- Session je ukončena
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
-
Vytvoř data na demo tenantu:
- Přihlas se na http://demo.tenanto.local/app
- Vytvoř projekt "DEMO SECRET PROJECT"
- Vytvoř úkol "DEMO SECRET TASK"
- Odhlás se
-
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"!
-
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
- API vrací 401 při použití tokenu jiného tenantu
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
-
Zobrazení plánů:
- Jdi na http://demo.tenanto.local/billing
- Zobrazí se dostupné plány
- Ceny odpovídají konfiguraci
-
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
-
Ověření subscription:
- Přesměrování zpět do aplikace
- Subscription je aktivní
- Plan info se zobrazuje správně
-
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",...}}
- Login vrací token
- Token obsahuje správného uživatele
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"}'
- /auth/me vrací správného uživatele
- /projects vrací pouze projekty aktuálního tenantu
- POST /projects vytvoří projekt
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
- Po překročení limitu vrací 429 Too Many Requests
6.4 Logout
curl -X POST http://demo.tenanto.local/api/v1/auth/logout \
-H "Authorization: Bearer $TOKEN"
- Token je invalidován
- Další requesty s tímto tokenem vrací 401
7. Email Testování
7.1 Mailhog Setup
Mailhog běží na: http://localhost:8025
7.2 Test Registration Email
- Zaregistruj nového uživatele
- Zkontroluj Mailhog - přišel verification email
- Klikni na verification link
- Email je ověřen
7.3 Test Password Reset
- Jdi na login → "Forgot password"
- Zadej email existujícího uživatele
- Zkontroluj Mailhog - přišel reset email
- Klikni na reset link
- Nastav nové heslo
- Přihlas se novým heslem
7.4 Test Billing Notifications
- Vytvoř subscription (Stripe)
- Zkontroluj Mailhog - přišel confirmation email
- Zruš subscription
- Přišel cancellation email
8. Code Quality
8.1 PHPStan
docker compose exec app ./vendor/bin/phpstan analyse
- 0 errors
8.2 Pint (Code Style)
docker compose exec app ./vendor/bin/pint --test
- Žádné style violations
8.3 Testy
docker compose exec app php artisan test
- Všechny testy prochází
- Počet testů: 607+ passed
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"
- Žádná hardcoded hesla v kódu
9.2 Debug Statements
# Hledej dd() a dump()
docker compose exec app grep -r "dd(\|dump(\|var_dump(" --include="*.php" app/ routes/
- Žádné debug statements
9.3 TODO/FIXME
docker compose exec app grep -r "TODO\|FIXME\|XXX\|HACK" --include="*.php" app/
- Žádné kritické TODO (nebo jsou zdokumentované)
9.4 Environment
# .env.example má správné defaults
cat .env.example | grep -E "APP_DEBUG|APP_ENV"
- APP_DEBUG=false v .env.example
- APP_ENV=production v .env.example
9.5 Sensitive Files
-
.envNENÍ v git repository -
storage/logs/*.logNENÍ v balíčku -
.git/NENÍ v balíčku pro CodeCanyon
10. Finální Checklist
Pre-Submission
- Fresh install funguje bez chyb
- Admin panel kompletně funkční
- Tenant panel kompletně funkční
- Tenant isolation funguje (KRITICKÉ)
- API endpoints fungují
- Stripe billing funguje (test mode)
- Emaily se odesílají
- PHPStan: 0 errors
- Všechny testy prochází
- Žádné hardcoded credentials
- Žádné dd()/dump()
- Dokumentace kompletní
Dokumentace
- README.md aktuální
- docs/codecanyon.md připraven
- CHANGELOG.md aktuální
- LICENSE.md existuje
- .env.example kompletní
Package
- Assets buildnuté (
npm run build) - Composer optimalizován
- Žádné dev soubory v balíčku
- ZIP archiv vytvořen
Poznámky k testování
Při nalezení bugu:
- Zapiš přesné kroky k reprodukci
- Zapiš očekávané vs. skutečné chování
- Přidej screenshot pokud relevantní
- Oprav a otestuj znovu
Historie testování
| Datum | Verze | Tester | Výsledek |
|---|---|---|---|
Poslední aktualizace: 2025-12-05