Pulse/internal/monitoring/multi_tenant_monitor_additional_test.go

76 lines
2 KiB
Go

package monitoring
import (
"testing"
"github.com/rcourtman/pulse-go-rewrite/internal/config"
)
func TestMultiTenantMonitorRemoveTenant(t *testing.T) {
monitor := &Monitor{}
mtm := &MultiTenantMonitor{
monitors: map[string]*Monitor{
"org-1": monitor,
},
}
mtm.RemoveTenant("org-1")
if _, ok := mtm.monitors["org-1"]; ok {
t.Fatalf("expected org-1 to be removed")
}
// Ensure removal of missing orgs is a no-op.
mtm.RemoveTenant("missing")
}
func TestMultiTenantMonitorLoadsTenantAPITokens(t *testing.T) {
baseDir := t.TempDir()
baseCfg := &config.Config{
DataPath: baseDir,
ConfigPath: baseDir,
}
globalRecord, err := config.NewAPITokenRecord("global-token-123.12345678", "global", []string{config.ScopeMonitoringRead})
if err != nil {
t.Fatalf("new global token: %v", err)
}
baseCfg.APITokens = []config.APITokenRecord{*globalRecord}
baseCfg.SortAPITokens()
mtp := config.NewMultiTenantPersistence(baseDir)
tenantPersistence, err := mtp.GetPersistence("org-1")
if err != nil {
t.Fatalf("get tenant persistence: %v", err)
}
tenantRecord, err := config.NewAPITokenRecord("tenant-token-123.12345678", "tenant", []string{config.ScopeHostReport})
if err != nil {
t.Fatalf("new tenant token: %v", err)
}
tenantRecord.OrgID = "org-1"
if err := tenantPersistence.SaveAPITokens([]config.APITokenRecord{*tenantRecord}); err != nil {
t.Fatalf("save tenant tokens: %v", err)
}
mtm := NewMultiTenantMonitor(baseCfg, mtp, nil)
t.Cleanup(mtm.Stop)
monitor, err := mtm.GetMonitor("org-1")
if err != nil {
t.Fatalf("get tenant monitor: %v", err)
}
cfg := monitor.GetConfig()
if cfg == nil {
t.Fatalf("expected tenant config")
}
if len(cfg.APITokens) != 2 {
t.Fatalf("expected 2 merged api tokens, got %d", len(cfg.APITokens))
}
if !cfg.IsValidAPIToken("global-token-123.12345678") {
t.Fatalf("expected global token to remain valid")
}
if !cfg.IsValidAPIToken("tenant-token-123.12345678") {
t.Fatalf("expected tenant token to be loaded")
}
}