Files
OliveTin/service/internal/acl/acl_test.go
James Read 633e513697
Some checks failed
Build Snapshot / build-snapshot (push) Has been cancelled
DevSkim / DevSkim (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
feature: (#568) Separator allowed in usergroup line for trusted headers (#572)
2025-04-22 14:35:49 +01:00

112 lines
2.8 KiB
Go

package acl
import (
"github.com/stretchr/testify/assert"
"testing"
)
func Test_hasGroupsMatch(t *testing.T) {
tests := []struct {
name string
aclMatchUsergroups []string
usergroupLine string
matches bool
sep string
}{
{
name: "No groups match",
aclMatchUsergroups: []string{"group1", "group2"},
usergroupLine: "group3",
matches: false,
},
{
name: "Exact match",
aclMatchUsergroups: []string{"group1", "group2"},
usergroupLine: "group1",
matches: true,
},
{
name: "Multiple groups match",
aclMatchUsergroups: []string{"group1", "group2"},
usergroupLine: "group1 group2",
matches: true,
},
{
name: "Comma-separated groups match",
aclMatchUsergroups: []string{"group1", "group2", "group3"},
usergroupLine: "group1, group2",
matches: true,
sep: ",",
},
{
name: "Comma-separated groups with default separator does not match",
aclMatchUsergroups: []string{"group1"},
usergroupLine: "group1, group2",
matches: false,
sep: "",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
user := &AuthenticatedUser{
Username: "testuser",
UsergroupLine: tt.usergroupLine,
}
if matches := user.matchesUsergroupAcl(tt.aclMatchUsergroups, tt.sep); matches != tt.matches {
t.Errorf("AuthenticatedUser.matchesUsergroupAcl() = %v, want %v for usergroups %v", matches, tt.matches, tt.aclMatchUsergroups)
}
})
}
}
func Test_parseUsergroupLine(t *testing.T) {
tests := []struct {
name string
usergroupLine string
expectedGroups []string
sep string
}{
{
name: "Default separator (space)",
usergroupLine: "group1 group2",
expectedGroups: []string{"group1", "group2"},
},
{
name: "Comma-separated groups",
usergroupLine: "group1 , group2",
expectedGroups: []string{"group1", "group2"},
sep: ",",
},
{
name: "Multiple spaces",
usergroupLine: "group1 , group2 , group3",
expectedGroups: []string{"group1", "group2", "group3"},
sep: ",",
},
{
name: "Empty usergroup line",
usergroupLine: "",
expectedGroups: []string{},
},
{
name: "Empty group names",
usergroupLine: "|group1| | group3|",
expectedGroups: []string{"group1", "group3"},
sep: "|",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
user := &AuthenticatedUser{
Username: "testuser",
UsergroupLine: tt.usergroupLine,
}
assert.Equal(t, tt.expectedGroups, user.parseUsergroupLine(tt.sep))
})
}
}