| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package acl
- import (
- "testing"
- authpublic "github.com/OliveTin/OliveTin/internal/auth/authpublic"
- config "github.com/OliveTin/OliveTin/internal/config"
- "github.com/stretchr/testify/assert"
- )
- func TestIsAllowedViewDashboardAbsentAclsUnrestricted(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.DefaultPermissions.View = false
- dashboard := &config.DashboardComponent{
- Title: "Public",
- Contents: []*config.DashboardComponent{
- {Title: "Status", Type: "display"},
- },
- }
- guest := &authpublic.AuthenticatedUser{Username: "guest", Provider: "system"}
- guest.BuildUserAcls(cfg)
- assert.True(t, IsAllowedViewDashboard(cfg, guest, dashboard))
- assert.True(t, IsAllowedViewDashboard(cfg, guest, nil))
- }
- func TestIsAllowedViewDashboardAllowDenyAndDefaultFallback(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.DefaultPermissions.View = false
- cfg.AccessControlLists = []*config.AccessControlList{
- {
- Name: "admins",
- MatchUsernames: []string{"admin"},
- Permissions: config.PermissionsList{View: true, Exec: true},
- },
- }
- dashboard := &config.DashboardComponent{
- Title: "Services",
- Acls: []string{"admins"},
- Contents: []*config.DashboardComponent{
- {Title: "Status: running", Type: "display"},
- },
- }
- guest := &authpublic.AuthenticatedUser{Username: "guest", Provider: "system"}
- guest.BuildUserAcls(cfg)
- admin := &authpublic.AuthenticatedUser{Username: "admin"}
- admin.BuildUserAcls(cfg)
- assert.False(t, IsAllowedViewDashboard(cfg, guest, dashboard))
- assert.True(t, IsAllowedViewDashboard(cfg, admin, dashboard))
- cfg.DefaultPermissions.View = true
- assert.True(t, IsAllowedViewDashboard(cfg, guest, dashboard),
- "when no relevant ACL matches, fall back to defaultPermissions.view")
- }
- func TestIsAllowedViewDashboardIgnoresAddToEveryAction(t *testing.T) {
- cfg := config.DefaultConfig()
- cfg.DefaultPermissions.View = false
- cfg.AccessControlLists = []*config.AccessControlList{
- {
- Name: "admins",
- MatchUsernames: []string{"admin"},
- AddToEveryAction: true,
- Permissions: config.PermissionsList{View: true, Exec: true},
- },
- }
- dashboard := &config.DashboardComponent{
- Title: "Secret",
- Acls: []string{"other"},
- Contents: []*config.DashboardComponent{
- {Title: "Hidden status", Type: "display"},
- },
- }
- admin := &authpublic.AuthenticatedUser{Username: "admin"}
- admin.BuildUserAcls(cfg)
- assert.False(t, IsAllowedViewDashboard(cfg, admin, dashboard),
- "AddToEveryAction must not grant dashboard view without listing the ACL on the dashboard")
- }
|