Files
akvorado/cmd/demo-exporter_test.go
2025-08-05 06:21:34 +02:00

46 lines
1.3 KiB
Go

// SPDX-FileCopyrightText: 2022 Free Mobile
// SPDX-License-Identifier: AGPL-3.0-only
package cmd
import (
"bytes"
"strings"
"testing"
"akvorado/common/helpers"
"akvorado/common/reporter"
)
func TestDemoExporterStart(t *testing.T) {
r := reporter.NewMock(t)
config := DemoExporterConfiguration{}
config.Reset()
if err := demoExporterStart(r, config, true); err != nil {
t.Fatalf("demoExporterStart() error:\n%+v", err)
}
}
func TestDemoExporter(t *testing.T) {
root := RootCmd
buf := new(bytes.Buffer)
root.SetOut(buf)
root.SetArgs([]string{"demo-exporter", "--check", "/dev/null"})
t.Setenv("AKVORADO_CFG_DEMOEXPORTER_SNMP_NAME", "test")
err := root.Execute()
if err == nil {
t.Fatal("`demo-exporter` should produce an error")
}
want := []string{
`invalid configuration:`,
`Key: 'DemoExporterConfiguration.SNMP.Interfaces' Error:Field validation for 'Interfaces' failed on the 'min' tag`,
`Key: 'DemoExporterConfiguration.Flows.Flows' Error:Field validation for 'Flows' failed on the 'min' tag`,
`Key: 'DemoExporterConfiguration.Flows.Target' Error:Field validation for 'Target' failed on the 'required' tag`,
}
got := strings.Split(err.Error(), "\n")
if diff := helpers.Diff(got, want); diff != "" {
t.Fatalf("`demo-exporter` (-got, +want):\n%s", diff)
}
}