mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
58 lines
2.1 KiB
Go
58 lines
2.1 KiB
Go
package auth
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCanonicalizeMonitoringCollectorScopes(t *testing.T) {
|
|
t.Run("minimal collector", func(t *testing.T) {
|
|
scopes := []string{ScopeAgentReport, ScopeAgentConfigRead}
|
|
canonical, changed, err := CanonicalizeRoleScopes(RuntimeRoleMonitoringCollector, scopes)
|
|
require.NoError(t, err)
|
|
require.False(t, changed)
|
|
require.Equal(t, scopes, canonical)
|
|
})
|
|
|
|
t.Run("host collector", func(t *testing.T) {
|
|
scopes := []string{ScopeAgentReport, ScopeAgentConfigRead, ScopeDockerReport, ScopeKubernetesReport}
|
|
canonical, changed, err := CanonicalizeRoleScopes(RuntimeRoleMonitoringCollector, scopes)
|
|
require.NoError(t, err)
|
|
require.False(t, changed)
|
|
require.Equal(t, scopes, canonical)
|
|
})
|
|
|
|
t.Run("excess authority removed", func(t *testing.T) {
|
|
canonical, changed, err := CanonicalizeRoleScopes(RuntimeRoleMonitoringCollector, []string{
|
|
ScopeSettingsWrite, ScopeAgentConfigRead, ScopeAgentReport, ScopeActionsExecute,
|
|
})
|
|
require.NoError(t, err)
|
|
require.True(t, changed)
|
|
require.Equal(t, []string{ScopeAgentReport, ScopeAgentConfigRead}, canonical)
|
|
})
|
|
|
|
t.Run("missing baseline rejected", func(t *testing.T) {
|
|
_, _, err := CanonicalizeRoleScopes(RuntimeRoleMonitoringCollector, []string{ScopeAgentReport})
|
|
require.ErrorContains(t, err, ScopeAgentConfigRead)
|
|
})
|
|
}
|
|
|
|
func TestCanonicalizeActionRunnerScopes(t *testing.T) {
|
|
canonical, changed, err := CanonicalizeRoleScopes(RuntimeRoleActionRunner, []string{ScopeAgentExec, ScopeAgentReport})
|
|
require.NoError(t, err)
|
|
require.True(t, changed)
|
|
require.Equal(t, []string{ScopeAgentExec}, canonical)
|
|
require.Error(t, ValidateRoleScopes(RuntimeRoleActionRunner, []string{ScopeAgentExec, ScopeAgentReport}))
|
|
}
|
|
|
|
func TestValidateRoleScopesRejectsUnknownRole(t *testing.T) {
|
|
require.Error(t, ValidateRoleScopes("future-unreviewed-role", []string{ScopeAgentReport}))
|
|
}
|
|
|
|
func TestValidateRoleScopesAcceptsAllowedScopesInAnyOrder(t *testing.T) {
|
|
require.NoError(t, ValidateRoleScopes(RuntimeRoleMonitoringCollector, []string{
|
|
ScopeDockerReport, ScopeAgentConfigRead, ScopeAgentReport,
|
|
}))
|
|
}
|