acl_hidden_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package acl
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. authpublic "github.com/OliveTin/OliveTin/internal/auth/authpublic"
  6. config "github.com/OliveTin/OliveTin/internal/config"
  7. )
  8. func TestIsAllowedViewIgnoresHiddenFlag(t *testing.T) {
  9. cfg := config.DefaultConfig()
  10. guest := &authpublic.AuthenticatedUser{Username: "guest", Provider: "system"}
  11. guest.BuildUserAcls(cfg)
  12. visible := &config.Action{Title: "Visible", Shell: "echo"}
  13. hidden := &config.Action{Title: "Hidden", Shell: "echo", Hidden: true}
  14. assert.True(t, IsAllowedView(cfg, guest, visible))
  15. assert.True(t, IsAllowedView(cfg, guest, hidden),
  16. "hidden must not deny view; use ACLs to restrict access")
  17. }
  18. func TestIsAllowedViewHiddenStillRespectsAcl(t *testing.T) {
  19. cfg := config.DefaultConfig()
  20. cfg.DefaultPermissions.View = false
  21. cfg.AccessControlLists = []*config.AccessControlList{
  22. {
  23. Name: "admins",
  24. MatchUsernames: []string{"admin"},
  25. AddToEveryAction: true,
  26. Permissions: config.PermissionsList{View: true},
  27. },
  28. }
  29. admin := &authpublic.AuthenticatedUser{Username: "admin"}
  30. admin.BuildUserAcls(cfg)
  31. guest := &authpublic.AuthenticatedUser{Username: "guest", Provider: "system"}
  32. guest.BuildUserAcls(cfg)
  33. hidden := &config.Action{Title: "Webhook", Shell: "echo", Hidden: true}
  34. assert.True(t, IsAllowedView(cfg, admin, hidden))
  35. assert.False(t, IsAllowedView(cfg, guest, hidden))
  36. }