You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
package s3api
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/iam/providers"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSelectPrimaryRole(t *testing.T) {
|
|
s3iam := &S3IAMIntegration{}
|
|
|
|
t.Run("empty_roles_returns_empty", func(t *testing.T) {
|
|
identity := &providers.ExternalIdentity{Attributes: make(map[string]string)}
|
|
result := s3iam.selectPrimaryRole([]string{}, identity)
|
|
assert.Equal(t, "", result)
|
|
})
|
|
|
|
t.Run("single_role_returns_that_role", func(t *testing.T) {
|
|
identity := &providers.ExternalIdentity{Attributes: make(map[string]string)}
|
|
result := s3iam.selectPrimaryRole([]string{"admin"}, identity)
|
|
assert.Equal(t, "admin", result)
|
|
})
|
|
|
|
t.Run("multiple_roles_returns_first", func(t *testing.T) {
|
|
identity := &providers.ExternalIdentity{Attributes: make(map[string]string)}
|
|
roles := []string{"viewer", "manager", "admin"}
|
|
result := s3iam.selectPrimaryRole(roles, identity)
|
|
assert.Equal(t, "viewer", result, "Should return first role")
|
|
})
|
|
|
|
t.Run("order_matters", func(t *testing.T) {
|
|
identity := &providers.ExternalIdentity{Attributes: make(map[string]string)}
|
|
|
|
// Test different orderings
|
|
roles1 := []string{"admin", "viewer", "manager"}
|
|
result1 := s3iam.selectPrimaryRole(roles1, identity)
|
|
assert.Equal(t, "admin", result1)
|
|
|
|
roles2 := []string{"viewer", "admin", "manager"}
|
|
result2 := s3iam.selectPrimaryRole(roles2, identity)
|
|
assert.Equal(t, "viewer", result2)
|
|
|
|
roles3 := []string{"manager", "admin", "viewer"}
|
|
result3 := s3iam.selectPrimaryRole(roles3, identity)
|
|
assert.Equal(t, "manager", result3)
|
|
})
|
|
|
|
t.Run("complex_enterprise_roles", func(t *testing.T) {
|
|
identity := &providers.ExternalIdentity{Attributes: make(map[string]string)}
|
|
roles := []string{
|
|
"finance-readonly",
|
|
"hr-manager",
|
|
"it-system-admin",
|
|
"guest-viewer",
|
|
}
|
|
result := s3iam.selectPrimaryRole(roles, identity)
|
|
// Should return the first role
|
|
assert.Equal(t, "finance-readonly", result, "Should return first role in list")
|
|
})
|
|
}
|