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

3.4 KiB

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