Ograničenje konekcija BE emulatora, sopstveni kontekst fiskalizacije nezavisan od prekida zahteva, validacija porta na setup stranici, serverska optimizacija kratke pretrage bez eval-a, testovi

This commit is contained in:
2026-07-13 15:10:02 +02:00
parent bc60288a0d
commit 9cf4e66f00
24 changed files with 619 additions and 40 deletions
+81
View File
@@ -0,0 +1,81 @@
package config
import (
"net/http/httptest"
"os"
"path/filepath"
"strings"
"testing"
)
func TestObradiSetupPotvrdiNevazeciJsonOdbija(t *testing.T) {
envFajl := filepath.Join(t.TempDir(), "ntech.env")
gotov := make(chan struct{})
req := httptest.NewRequest("POST", "/setup/potvrdi", strings.NewReader("nije json"))
w := httptest.NewRecorder()
obradiSetupPotvrdi(envFajl, gotov)(w, req)
if w.Code != 400 {
t.Fatalf("status = %d, očekivano 400 za nevažeći JSON", w.Code)
}
if _, err := os.Stat(envFajl); err == nil {
t.Fatal("ntech.env ne sme biti upisan kad je JSON nevažeći")
}
select {
case <-gotov:
t.Fatal("gotov kanal ne sme biti zatvoren kad zahtev nije uspeo")
default:
}
}
func TestObradiSetupPotvrdiPortNulaOdbija(t *testing.T) {
envFajl := filepath.Join(t.TempDir(), "ntech.env")
gotov := make(chan struct{})
req := httptest.NewRequest("POST", "/setup/potvrdi", strings.NewReader(`{"port":0}`))
w := httptest.NewRecorder()
obradiSetupPotvrdi(envFajl, gotov)(w, req)
if w.Code != 400 {
t.Fatalf("status = %d, očekivano 400 za port 0", w.Code)
}
}
func TestObradiSetupPotvrdiPortVanOpsegaOdbija(t *testing.T) {
envFajl := filepath.Join(t.TempDir(), "ntech.env")
gotov := make(chan struct{})
req := httptest.NewRequest("POST", "/setup/potvrdi", strings.NewReader(`{"port":99999}`))
w := httptest.NewRecorder()
obradiSetupPotvrdi(envFajl, gotov)(w, req)
if w.Code != 400 {
t.Fatalf("status = %d, očekivano 400 za port van opsega", w.Code)
}
}
func TestObradiSetupPotvrdiValidanPortUpisuje(t *testing.T) {
envFajl := filepath.Join(t.TempDir(), "ntech.env")
gotov := make(chan struct{})
req := httptest.NewRequest("POST", "/setup/potvrdi", strings.NewReader(`{"port":8080}`))
w := httptest.NewRecorder()
obradiSetupPotvrdi(envFajl, gotov)(w, req)
if w.Code != 200 {
t.Fatalf("status = %d, očekivano 200 za validan port", w.Code)
}
sadrzaj, err := os.ReadFile(envFajl)
if err != nil {
t.Fatalf("ntech.env nije upisan: %v", err)
}
if !strings.Contains(string(sadrzaj), "NTECH_PORT=8080") {
t.Errorf("ntech.env sadržaj = %q, očekivano NTECH_PORT=8080", sadrzaj)
}
select {
case <-gotov:
default:
t.Fatal("gotov kanal mora biti zatvoren posle uspešnog zahteva")
}
}