- 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
61 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|