@@ -18,6 +18,7 @@ import (
1818 "context"
1919 "fmt"
2020 "net/http"
21+ "net/url"
2122)
2223
2324const dbUsersBasePath = "groups/%s/databaseUsers"
@@ -115,6 +116,9 @@ type databaseUsers struct {
115116//
116117// See more: https://docs.atlas.mongodb.com/reference/api/database-users-get-all-users/
117118func (s * DatabaseUsersServiceOp ) List (ctx context.Context , groupID string , listOptions * ListOptions ) ([]DatabaseUser , * Response , error ) {
119+ if groupID == "" {
120+ return nil , nil , NewArgError ("groupID" , "must be set" )
121+ }
118122 path := fmt .Sprintf (dbUsersBasePath , groupID )
119123
120124 // Add query params from listOptions
@@ -156,7 +160,8 @@ func (s *DatabaseUsersServiceOp) Get(ctx context.Context, databaseName, groupID,
156160 }
157161
158162 basePath := fmt .Sprintf (dbUsersBasePath , groupID )
159- path := fmt .Sprintf ("%s/%s/%s" , basePath , databaseName , username )
163+ escapedEntry := url .PathEscape (username )
164+ path := fmt .Sprintf ("%s/%s/%s" , basePath , databaseName , escapedEntry )
160165
161166 req , err := s .Client .NewRequest (ctx , http .MethodGet , path , nil )
162167 if err != nil {
@@ -176,6 +181,9 @@ func (s *DatabaseUsersServiceOp) Get(ctx context.Context, databaseName, groupID,
176181//
177182// See more: https://docs.atlas.mongodb.com/reference/api/database-users-create-a-user/
178183func (s * DatabaseUsersServiceOp ) Create (ctx context.Context , groupID string , createRequest * DatabaseUser ) (* DatabaseUser , * Response , error ) {
184+ if groupID == "" {
185+ return nil , nil , NewArgError ("groupID" , "must be set" )
186+ }
179187 if createRequest == nil {
180188 return nil , nil , NewArgError ("createRequest" , "cannot be nil" )
181189 }
@@ -200,13 +208,21 @@ func (s *DatabaseUsersServiceOp) Create(ctx context.Context, groupID string, cre
200208//
201209// See more: https://docs.atlas.mongodb.com/reference/api/database-users-update-a-user/
202210func (s * DatabaseUsersServiceOp ) Update (ctx context.Context , groupID , username string , updateRequest * DatabaseUser ) (* DatabaseUser , * Response , error ) {
211+ if groupID == "" {
212+ return nil , nil , NewArgError ("groupID" , "must be set" )
213+ }
214+ if username == "" {
215+ return nil , nil , NewArgError ("username" , "must be set" )
216+ }
203217 if updateRequest == nil {
204218 return nil , nil , NewArgError ("updateRequest" , "cannot be nil" )
205219 }
206220
207221 basePath := fmt .Sprintf (dbUsersBasePath , groupID )
208222
209- path := fmt .Sprintf ("%s/%s/%s" , basePath , updateRequest .GetAuthDB (), username )
223+ escapedEntry := url .PathEscape (username )
224+
225+ path := fmt .Sprintf ("%s/%s/%s" , basePath , updateRequest .GetAuthDB (), escapedEntry )
210226
211227 req , err := s .Client .NewRequest (ctx , http .MethodPatch , path , updateRequest )
212228 if err != nil {
@@ -237,7 +253,8 @@ func (s *DatabaseUsersServiceOp) Delete(ctx context.Context, databaseName, group
237253 }
238254
239255 basePath := fmt .Sprintf (dbUsersBasePath , groupID )
240- path := fmt .Sprintf ("%s/%s/%s" , basePath , databaseName , username )
256+ escapedEntry := url .PathEscape (username )
257+ path := fmt .Sprintf ("%s/%s/%s" , basePath , databaseName , escapedEntry )
241258
242259 req , err := s .Client .NewRequest (ctx , http .MethodDelete , path , nil )
243260 if err != nil {
0 commit comments