mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-17 11:26:58 +00:00
- replace standalone sandbox keys with "sandbox/root" vault entry - update inspector config to use vault targets (no passwords/keys) - make sandbox default active environment - add vault helpers and tests for remotessh
112 lines
3.6 KiB
Go
112 lines
3.6 KiB
Go
package gateway
|
|
|
|
import "testing"
|
|
|
|
func TestAggregateHealthStatus_allHealthy(t *testing.T) {
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "ok"},
|
|
"olric": {Status: "ok"},
|
|
"ipfs": {Status: "ok"},
|
|
"libp2p": {Status: "ok"},
|
|
"anyone": {Status: "ok"},
|
|
"vault": {Status: "ok"},
|
|
"wireguard": {Status: "ok"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "healthy" {
|
|
t.Errorf("expected healthy, got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_rqliteError(t *testing.T) {
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "error", Error: "connection refused"},
|
|
"olric": {Status: "ok"},
|
|
"ipfs": {Status: "ok"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "unhealthy" {
|
|
t.Errorf("expected unhealthy, got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_nonCriticalError(t *testing.T) {
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "ok"},
|
|
"olric": {Status: "error", Error: "timeout"},
|
|
"ipfs": {Status: "ok"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "degraded" {
|
|
t.Errorf("expected degraded, got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_unavailableIsNotError(t *testing.T) {
|
|
// Key test: "unavailable" services (like Anyone in sandbox) should NOT
|
|
// cause degraded status.
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "ok"},
|
|
"olric": {Status: "ok"},
|
|
"vault": {Status: "ok"},
|
|
"ipfs": {Status: "unavailable"},
|
|
"libp2p": {Status: "unavailable"},
|
|
"anyone": {Status: "unavailable"},
|
|
"wireguard": {Status: "unavailable"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "healthy" {
|
|
t.Errorf("expected healthy when services are unavailable, got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_emptyChecks(t *testing.T) {
|
|
checks := map[string]checkResult{}
|
|
if got := aggregateHealthStatus(checks); got != "healthy" {
|
|
t.Errorf("expected healthy for empty checks, got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_rqliteErrorOverridesDegraded(t *testing.T) {
|
|
// rqlite error should take priority over other errors
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "error", Error: "leader not found"},
|
|
"olric": {Status: "error", Error: "timeout"},
|
|
"anyone": {Status: "error", Error: "not reachable"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "unhealthy" {
|
|
t.Errorf("expected unhealthy (rqlite takes priority), got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_vaultErrorIsUnhealthy(t *testing.T) {
|
|
// vault is critical — error should mean unhealthy, not degraded
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "ok"},
|
|
"vault": {Status: "error", Error: "vault-guardian unreachable on port 7500"},
|
|
"olric": {Status: "ok"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "unhealthy" {
|
|
t.Errorf("expected unhealthy (vault is critical), got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_wireguardErrorIsDegraded(t *testing.T) {
|
|
// wireguard is non-critical — error should mean degraded, not unhealthy
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "ok"},
|
|
"vault": {Status: "ok"},
|
|
"wireguard": {Status: "error", Error: "wg0 interface not found"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "degraded" {
|
|
t.Errorf("expected degraded (wireguard is non-critical), got %s", got)
|
|
}
|
|
}
|
|
|
|
func TestAggregateHealthStatus_bothCriticalDown(t *testing.T) {
|
|
checks := map[string]checkResult{
|
|
"rqlite": {Status: "error", Error: "connection refused"},
|
|
"vault": {Status: "error", Error: "unreachable"},
|
|
"wireguard": {Status: "ok"},
|
|
}
|
|
if got := aggregateHealthStatus(checks); got != "unhealthy" {
|
|
t.Errorf("expected unhealthy, got %s", got)
|
|
}
|
|
}
|