| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package executor
- import (
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- config "github.com/OliveTin/OliveTin/internal/config"
- "github.com/OliveTin/OliveTin/internal/entities"
- )
- func TestResolveOnDashboardsDefaultsToActionsDashboard(t *testing.T) {
- index := buildDashboardTargetIndex(&config.Config{})
- targets := resolveOnDashboards(index, "Lonely Action", "")
- require.Len(t, targets, 1)
- assert.Equal(t, "Actions", targets[0].Title)
- assert.Equal(t, "/", targets[0].Path)
- }
- func TestResolveOnDashboardsConfiguredDashboard(t *testing.T) {
- cfg := &config.Config{
- Actions: []*config.Action{
- {Title: "Restart"},
- },
- Dashboards: []*config.DashboardComponent{
- {
- Title: "Operations",
- Contents: []*config.DashboardComponent{
- {Title: "Restart"},
- },
- },
- },
- }
- index := buildDashboardTargetIndex(cfg)
- targets := resolveOnDashboards(index, "Restart", "")
- require.Len(t, targets, 1)
- assert.Equal(t, "Operations", targets[0].Title)
- assert.Equal(t, "/dashboards/Operations", targets[0].Path)
- }
- func TestResolveOnDashboardsEntityDirectory(t *testing.T) {
- cfg := &config.Config{
- Actions: []*config.Action{
- {Title: "Reboot", Entity: "host"},
- },
- Dashboards: []*config.DashboardComponent{
- {
- Title: "Servers",
- Contents: []*config.DashboardComponent{
- {
- Type: "fieldset",
- Entity: "host",
- Contents: []*config.DashboardComponent{
- {
- Type: "directory",
- Title: "Host Details",
- Contents: []*config.DashboardComponent{
- {Title: "Reboot"},
- },
- },
- },
- },
- },
- },
- },
- }
- entities.ClearEntitiesOfType("host")
- defer entities.ClearEntitiesOfType("host")
- entities.AddEntity("host", "host-1", map[string]any{"title": "Host 1"})
- index := buildDashboardTargetIndex(cfg)
- targets := resolveOnDashboards(index, "Reboot", "host-1")
- require.Len(t, targets, 1)
- assert.Equal(t, "Host Details", targets[0].Title)
- assert.Equal(t, "host", targets[0].EntityType)
- assert.Equal(t, "host-1", targets[0].EntityKey)
- assert.Equal(t, "/dashboards/Host Details/host/host-1", targets[0].Path)
- }
- func TestRebuildActionMapStoresOnDashboards(t *testing.T) {
- cfg := &config.Config{
- Actions: []*config.Action{
- {Title: "Only Default"},
- {Title: "Configured"},
- },
- Dashboards: []*config.DashboardComponent{
- {
- Title: "Custom",
- Contents: []*config.DashboardComponent{
- {Title: "Configured"},
- },
- },
- },
- }
- ex := DefaultExecutor(cfg)
- ex.RebuildActionMap()
- defaultBinding := ex.FindBindingWithNoEntity(cfg.Actions[0])
- require.NotNil(t, defaultBinding)
- require.Len(t, defaultBinding.OnDashboards, 1)
- assert.Equal(t, "Actions", defaultBinding.OnDashboards[0].Title)
- assert.False(t, defaultBinding.IsOnConfiguredDashboard())
- configuredBinding := ex.FindBindingWithNoEntity(cfg.Actions[1])
- require.NotNil(t, configuredBinding)
- require.Len(t, configuredBinding.OnDashboards, 1)
- assert.Equal(t, "Custom", configuredBinding.OnDashboards[0].Title)
- assert.True(t, configuredBinding.IsOnConfiguredDashboard())
- }
- func TestResolveOnDashboardsMultipleDashboards(t *testing.T) {
- cfg := &config.Config{
- Actions: []*config.Action{
- {Title: "Shared"},
- },
- Dashboards: []*config.DashboardComponent{
- {
- Title: "One",
- Contents: []*config.DashboardComponent{
- {Title: "Shared"},
- },
- },
- {
- Title: "Two",
- Contents: []*config.DashboardComponent{
- {Title: "Shared"},
- },
- },
- },
- }
- index := buildDashboardTargetIndex(cfg)
- targets := resolveOnDashboards(index, "Shared", "")
- require.Len(t, targets, 2)
- assert.Equal(t, "One", targets[0].Title)
- assert.Equal(t, "Two", targets[1].Title)
- }
|