Files
ProxmoxDash/services_test.go
2026-08-05 20:04:29 +03:00

56 lines
1.8 KiB
Go

package main
import (
"testing"
"time"
)
func TestServiceCRUD(t *testing.T) {
store, err := openStore(":memory:")
if err != nil {
t.Fatal(err)
}
defer store.Close()
v, err := store.SaveService(MonitoredService{Name: "Test", URL: "https://example.test", CheckType: "http", ExpectedCode: 204, TimeoutSeconds: 2, Enabled: true})
if err != nil || v.ID == 0 {
t.Fatalf("save: %+v %v", v, err)
}
items, err := store.Services()
if err != nil || len(items) != 1 {
t.Fatalf("list: %+v %v", items, err)
}
if err := store.DeleteService(v.ID); err != nil {
t.Fatal(err)
}
}
func TestValidateServiceAllowsLocalAddress(t *testing.T) {
v := MonitoredService{Name: "Host", LocalAddress: "192.168.0.12", CheckType: "ping", TimeoutSeconds: 5}
if err := validateService(v); err != nil {
t.Fatal(err)
}
}
func TestValidateServiceChecksBothHTTPAddresses(t *testing.T) {
v := MonitoredService{Name: "Gitea", URL: "https://git.example.test", LocalAddress: "192.168.0.6:3000", CheckType: "http", TimeoutSeconds: 5}
if err := validateService(v); err == nil {
t.Fatal("expected invalid local HTTP address")
}
v.LocalAddress = "https://192.168.0.6:3000"
if err := validateService(v); err != nil {
t.Fatal(err)
}
}
func TestHTTPServiceTransportHasBoundedIdlePool(t *testing.T) {
if serviceHTTPClient.Transport != serviceHTTPTransport {
t.Fatal("проверки сервисов должны использовать общий HTTP transport")
}
if serviceHTTPTransport.IdleConnTimeout < time.Second {
t.Fatal("idle-соединения должны автоматически закрываться")
}
if serviceHTTPTransport.MaxIdleConnsPerHost < 1 || serviceHTTPTransport.MaxIdleConnsPerHost > 4 {
t.Fatalf("небезопасный размер пула на хост: %d", serviceHTTPTransport.MaxIdleConnsPerHost)
}
}