test: prva grupa testova (kripto, model, RBAC, helperi, TOTP repo)
Dodati testovi pored koda: - internal/model: CenaBezPdv/PdvIznos, Klijent.PunoIme, PreostaloZaNaplatu - internal/middleware: ImaDozvolu matrica po ulogama + SveDozvole - internal/handler: izvuciIP, parseOpcionuCenu, validnoImeBackupa (anti path-traversal) - internal/db/sqlite: integracioni nad privremenom SQLite bazom + prave migracije (TOTP šifrovan u mirovanju, brisanje, ZasifrujPostojeceTotp + idempotentnost) 19 test funkcija, prolaze i sa -race. Dopunjava kripto_test.go iz ranije.
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package middleware
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestImaDozvoluSuperadmin(t *testing.T) {
|
||||
// superadmin sme sve, uključujući akcije koje ni ne postoje
|
||||
for _, akcija := range []string{"artikal.obrisi", "prodaja.storno", "backup.pokreni", "nepostojeca.akcija"} {
|
||||
if !ImaDozvolu("superadmin", akcija) {
|
||||
t.Errorf("superadmin bi morao da sme %q", akcija)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestImaDozvoluAdmin(t *testing.T) {
|
||||
sme := []string{"artikal.obrisi", "prodaja.storno", "backup.pokreni", "izvestaj.pregled", "podesavanja.izmeni", "dashboard.prihod"}
|
||||
for _, a := range sme {
|
||||
if !ImaDozvolu("admin", a) {
|
||||
t.Errorf("admin bi morao da sme %q", a)
|
||||
}
|
||||
}
|
||||
// admin ne sme nepostojeću akciju
|
||||
if ImaDozvolu("admin", "nepostojeca.akcija") {
|
||||
t.Error("admin ne bi smeo nepostojeću akciju")
|
||||
}
|
||||
}
|
||||
|
||||
func TestImaDozvoluRadnik(t *testing.T) {
|
||||
sme := []string{"kategorija.pregled", "dobavljac.dodaj", "servis.izmeni", "prodaja.dodaj", "klijent.izmeni", "tema.lokalno"}
|
||||
for _, a := range sme {
|
||||
if !ImaDozvolu("radnik", a) {
|
||||
t.Errorf("radnik bi morao da sme %q", a)
|
||||
}
|
||||
}
|
||||
// radnik NE sme: brisanje, storno, izveštaje, podešavanja, backup
|
||||
neSme := []string{"prodaja.obrisi", "prodaja.storno", "servis.obrisi", "klijent.obrisi",
|
||||
"dobavljac.obrisi", "izvestaj.pregled", "podesavanja.izmeni", "backup.pokreni", "dashboard.prihod"}
|
||||
for _, a := range neSme {
|
||||
if ImaDozvolu("radnik", a) {
|
||||
t.Errorf("radnik NE bi smeo %q", a)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestImaDozvoluNepoznataUloga(t *testing.T) {
|
||||
if ImaDozvolu("gost", "kategorija.pregled") {
|
||||
t.Error("nepoznata uloga ne sme ništa")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSveDozvolePokrivaSveAkcije(t *testing.T) {
|
||||
m := SveDozvole("radnik")
|
||||
if len(m) != len(sveAkcije) {
|
||||
t.Fatalf("SveDozvole vraća %d akcija, očekivano %d", len(m), len(sveAkcije))
|
||||
}
|
||||
for _, a := range sveAkcije {
|
||||
if _, ok := m[a]; !ok {
|
||||
t.Errorf("akcija %q nedostaje u SveDozvole", a)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user