diff --git a/internal/cli/atlas/customdbroles/update.go b/internal/cli/atlas/customdbroles/update.go index f4904321a7..b8ba6f99c9 100644 --- a/internal/cli/atlas/customdbroles/update.go +++ b/internal/cli/atlas/customdbroles/update.go @@ -24,7 +24,6 @@ import ( "github.com/mongodb/mongodb-atlas-cli/internal/config" "github.com/mongodb/mongodb-atlas-cli/internal/convert" "github.com/mongodb/mongodb-atlas-cli/internal/flag" - "github.com/mongodb/mongodb-atlas-cli/internal/pointer" "github.com/mongodb/mongodb-atlas-cli/internal/store" "github.com/mongodb/mongodb-atlas-cli/internal/usage" "github.com/spf13/cobra" @@ -69,20 +68,18 @@ func (opts *UpdateOpts) Run() error { } func (opts *UpdateOpts) newCustomDBRole(existingRole *atlasv2.UserCustomDBRole) *atlasv2.UserCustomDBRole { - out := &atlasv2.UserCustomDBRole{ - InheritedRoles: pointer.Get(convert.BuildAtlasInheritedRoles(opts.inheritedRoles)), - } + inheritedRoles := convert.BuildAtlasInheritedRoles(opts.inheritedRoles) actions := joinActions(convert.BuildAtlasActions(opts.action)) - inheritedRoles := []atlasv2.DatabaseInheritedRole{} if opts.append { actions = appendActions(existingRole.GetActions(), actions) inheritedRoles = append(inheritedRoles, existingRole.GetInheritedRoles()...) } - out.SetActions(actions) - out.SetInheritedRoles(inheritedRoles) - return out + return &atlasv2.UserCustomDBRole{ + Actions: &actions, + InheritedRoles: &inheritedRoles, + } } func (opts *UpdateOpts) validate() error { diff --git a/test/e2e/atlas/custom_db_roles_test.go b/test/e2e/atlas/custom_db_roles_test.go index 9be10a40e1..c6412c7b86 100644 --- a/test/e2e/atlas/custom_db_roles_test.go +++ b/test/e2e/atlas/custom_db_roles_test.go @@ -29,10 +29,12 @@ import ( ) const ( - createPrivilege = "UPDATE" - updatePrivilege = "LIST_SESSIONS" - inheritedRole = "enableSharding@admin" - enableSharding = "enableSharding" + createPrivilege = "UPDATE" + updatePrivilege = "LIST_SESSIONS" + enableShardingRole = "enableSharding" + enableShardingInheritedRole = "enableSharding@admin" + readRole = "read" + readInheritedRole = "read@mydb" ) func TestDBRoles(t *testing.T) { @@ -50,7 +52,7 @@ func TestDBRoles(t *testing.T) { "create", roleName, "--privilege", fmt.Sprintf("%s@db.collection", createPrivilege), - "--inheritedRole", inheritedRole, + "--inheritedRole", enableShardingInheritedRole, "-o=json", ) cmd.Env = os.Environ() @@ -65,7 +67,7 @@ func TestDBRoles(t *testing.T) { a.Len(role.GetActions(), 1) a.Equal(createPrivilege, role.GetActions()[0].Action) a.Len(role.GetInheritedRoles(), 1) - a.Equal(enableSharding, role.GetInheritedRoles()[0].Role) + a.Equal(enableShardingRole, role.GetInheritedRoles()[0].Role) }) t.Run("List", func(t *testing.T) { @@ -101,7 +103,7 @@ func TestDBRoles(t *testing.T) { a.Len(role.GetActions(), 1) a.Equal(createPrivilege, role.GetActions()[0].Action) a.Len(role.GetInheritedRoles(), 1) - a.Equal(enableSharding, role.GetInheritedRoles()[0].Role) + a.Equal(enableShardingRole, role.GetInheritedRoles()[0].Role) }) t.Run("Update with append", func(t *testing.T) { @@ -109,6 +111,7 @@ func TestDBRoles(t *testing.T) { customDBRoleEntity, "update", roleName, + "--inheritedRole", readInheritedRole, "--privilege", updatePrivilege, "--privilege", fmt.Sprintf("%s@db2.collection", createPrivilege), "--append", @@ -126,8 +129,9 @@ func TestDBRoles(t *testing.T) { a.ElementsMatch( []string{role.GetActions()[0].Action, role.GetActions()[1].Action}, []string{updatePrivilege, createPrivilege}) - a.Len(role.GetInheritedRoles(), 1) - a.Equal(enableSharding, role.GetInheritedRoles()[0].Role) + a.ElementsMatch( + []string{enableShardingRole, readRole}, + []string{role.GetInheritedRoles()[0].Role, role.GetInheritedRoles()[1].Role}) }) t.Run("Update", func(t *testing.T) { @@ -135,6 +139,7 @@ func TestDBRoles(t *testing.T) { customDBRoleEntity, "update", roleName, + "--inheritedRole", enableShardingInheritedRole, "--privilege", updatePrivilege, "-o=json") cmd.Env = os.Environ() @@ -148,6 +153,8 @@ func TestDBRoles(t *testing.T) { a.Equal(roleName, role.RoleName) a.Len(role.GetActions(), 1) a.Equal(updatePrivilege, role.GetActions()[0].Action) + a.Len(role.GetInheritedRoles(), 1) + a.Equal(enableShardingRole, role.GetInheritedRoles()[0].Role) }) t.Run("Delete", func(t *testing.T) {