- 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>
106 lines
3.4 KiB
Markdown
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*
|