82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
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")
|
|
}
|
|
}
|