| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 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")
- })
- }
|