Files
GoNtech/internal/middleware/dozvole_test.go
T
Dasko 3a0f98622b Knjigovodstvo i fiskalizacija: dashboard upozorenje za praznine, KPO dozvole, pojednostavljen storno, ispravke verifikacije i kasira
- Dashboard kartica prikazuje naloge bez KIR/KPO/fiskalnog upisa i sumnjive duplikate (double-submit), sa zaštitom od automatskog dupliranja prihoda pri bulk dopuni
- Registrovane nedostajuće KPO dozvole (kpo.pregled/dodaj/obrisi) — modul je bio potpuno nedostupan
- Uklonjen suvišan/nefunkcionalan 'Ukloni nalog' (duplirao Storno bez stvarne razlike); Storno u listi prodaje sad vodi direktno na formu
- Kasir na fiskalnom računu koristi ime prijavljenog korisnika umesto fiksnog podešavanja
- Fiskalni računi za nalog uvek prikazuju najnoviji zapis (original vs. refund posle storna)
- Verifikaciona stranica (/v/) jasno označena kao lokalna test simulacija, ne prava provera kod PURS-a; dodat prikaz kusura
- Mock brojač fiskalnih računa (kartica emulator) sad preživljava restart servera
2026-07-01 23:01:26 +02:00

61 lines
1.8 KiB
Go

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.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)
}
}
}