dal-license-server/TESTING.md
djuka dc0114e4b7 Inicijalni commit: kompletna implementacija + dokumentacija + testovi
- Kompletna Go implementacija licencnog servera (19 Go fajlova)
- Klijentski API: activate, deactivate, validate
- Admin API: CRUD licence, stats, audit log
- Admin dashboard: htmx + Go templates
- RSA-2048 potpisivanje licencnih podataka
- Rate limiting i API key autentifikacija
- MySQL migracije i seed podaci (ESIR, ARV, LIGHT_TICKET)
- Unit testovi: keygen, crypto, model, middleware (24 testa)
- Dokumentacija: SPEC.md, ARCHITECTURE.md, SETUP.md, API.md, TESTING.md, README.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 07:42:25 +00:00

106 lines
3.4 KiB
Markdown

# DAL License Server — Test Checklista
## Health
- [ ] GET /api/v1/health vraca {"status":"ok"}
## Proizvodi
- [ ] GET /api/v1/admin/products vraca 3 proizvoda (ESIR, ARV, LIGHT_TICKET)
## Kreiranje licence
- [ ] Kreiranje ESIR licence sa svim poljima
- [ ] Kreiranje ARV licence sa svim poljima
- [ ] Kreiranje LIGHT_TICKET licence sa svim poljima
- [ ] Kreiranje bez customer_name → error
- [ ] Kreiranje sa nepostojecim proizvodom → error
- [ ] Generisani kljuc ima pravilan prefix (ESIR-, ARV-, LT-)
- [ ] Generisani kljuc ima format XXXX-XXXX-XXXX-XXXX
## Lista licenci
- [ ] GET /api/v1/admin/licenses vraca sve licence
- [ ] Filter po proizvodu radi ispravno
## Detalji licence
- [ ] GET /api/v1/admin/licenses/{id} vraca sve podatke
- [ ] Nepostojeci ID → 404
## Aktivacija
- [ ] Aktivacija sa validnim kljucem i fingerprint-om → 200 + potpis
- [ ] Response sadrzi RSA-SHA256 potpis
- [ ] Response sadrzi sve licencne podatke (limits, features, customer)
- [ ] Ponovna aktivacija istog fingerprint-a → 200 (isti racunar)
- [ ] Aktivacija sa drugog racunara (drugi fingerprint) → ALREADY_ACTIVATED error
- [ ] Aktivacija sa nepostojecim kljucem → INVALID_KEY error
- [ ] Aktivacija opozvane licence → KEY_REVOKED error
## Deaktivacija
- [ ] Deaktivacija aktivne licence → 200
- [ ] Deaktivacija vec deaktivirane → error
- [ ] Deaktivacija sa pogresnim fingerprint-om → error
## Ponovna aktivacija
- [ ] Posle deaktivacije, aktivacija sa novim fingerprint-om → 200
## Online validacija
- [ ] Validacija aktivne licence → valid: true
- [ ] Validacija opozvane licence → valid: false / revoked: true
- [ ] Validacija sa pogresnim fingerprint-om → error
- [ ] Validacija nepostojeceg kljuca → error
## Opozivanje (Revoke)
- [ ] Revoke licence → uspesno
- [ ] Revoke vec opozvane → error
- [ ] Posle revoke-a, aktivacija odbija → KEY_REVOKED
## Force Release
- [ ] Release aktivacije → uspesno
- [ ] Posle release-a, aktivacija sa novog racunara → 200
## API Key autentifikacija
- [ ] Admin endpoint bez X-API-Key → 401
- [ ] Admin endpoint sa pogresnim kljucem → 401
- [ ] Admin endpoint sa validnim kljucem → 200
## Rate limiting
- [ ] Vise od 10 activate zahteva u minuti → 429
- [ ] Vise od 60 validate zahteva u minuti → 429
## Statistike
- [ ] GET /api/v1/admin/stats vraca podatke po proizvodima
- [ ] Brojevi se azuriraju nakon kreiranja/aktiviranja licence
## Audit log
- [ ] GET /api/v1/admin/audit vraca log
- [ ] Aktivacija se loguje
- [ ] Deaktivacija se loguje
- [ ] Revoke se loguje
- [ ] Kreiranje licence se loguje
- [ ] Force release se loguje
## Dashboard — Login
- [ ] GET /login prikazuje login formu
- [ ] Login sa ispravnom lozinkom → redirect na /dashboard
- [ ] Login sa pogresnom lozinkom → error
- [ ] Pristup /dashboard bez logina → redirect na /login
## Dashboard — Stranice
- [ ] /dashboard prikazuje statistike po proizvodu
- [ ] /licenses prikazuje tabelu licenci
- [ ] /licenses?product=ESIR filtrira po proizvodu
- [ ] /licenses/new prikazuje formu za novu licencu
- [ ] POST /licenses kreira licencu i prikazuje detalje
- [ ] /licenses/{id} prikazuje detalje licence sa aktivacijama
- [ ] /audit prikazuje audit log
## Dashboard — Akcije
- [ ] Revoke iz dashboard-a → uspesno, prikazuje poruku
- [ ] Force release iz dashboard-a → uspesno
## Bezbednost
- [ ] .env nije u git-u
- [ ] crypto/private.pem nije u git-u
- [ ] Licencni kljuc je maskiran u logovima
---
*Poslednje azuriranje: mart 2026*