Skip to content

Commit 9393079

Browse files
feat (User Management): add query params search and include_settings to list_users operation (#246)
Signed-off-by: David Lim <David.Lim0305@ibm.com>
1 parent 14decd5 commit 9393079

5 files changed

+129
-19
lines changed

usermanagementv1/user_management_v1.go

+32-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* (C) Copyright IBM Corp. 2022.
2+
* (C) Copyright IBM Corp. 2023.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -15,7 +15,7 @@
1515
*/
1616

1717
/*
18-
* IBM OpenAPI SDK Code Generator Version: 3.60.2-95dc7721-20221102-203229
18+
* IBM OpenAPI SDK Code Generator Version: 3.70.0-7df966bf-20230419-195904
1919
*/
2020

2121
// Package usermanagementv1 : Operations and models for the UserManagementV1 service
@@ -28,7 +28,6 @@ import (
2828
"net/http"
2929
"reflect"
3030
"time"
31-
3231
"github.com/IBM/go-sdk-core/v5/core"
3332
common "github.com/IBM/platform-services-go-sdk/common"
3433
)
@@ -166,7 +165,8 @@ func (userManagement *UserManagementV1) DisableRetries() {
166165
// role. If restricted view is enabled and user has the viewer, editor, or administrator role on the user management
167166
// service, the API returns all users in the account. If unrestricted view is enabled and the user does not have these
168167
// roles, the API returns only the current user. Users are returned in a paginated list with a default limit of 100
169-
// users. You can iterate through all users by following the `next_url` field.
168+
// users. You can iterate through all users by following the `next_url` field. Additional substring search fields are
169+
// supported to filter the users.
170170
func (userManagement *UserManagementV1) ListUsers(listUsersOptions *ListUsersOptions) (result *UserList, response *core.DetailedResponse, err error) {
171171
return userManagement.ListUsersWithContext(context.Background(), listUsersOptions)
172172
}
@@ -207,6 +207,12 @@ func (userManagement *UserManagementV1) ListUsersWithContext(ctx context.Context
207207
if listUsersOptions.Limit != nil {
208208
builder.AddQuery("limit", fmt.Sprint(*listUsersOptions.Limit))
209209
}
210+
if listUsersOptions.IncludeSettings != nil {
211+
builder.AddQuery("include_settings", fmt.Sprint(*listUsersOptions.IncludeSettings))
212+
}
213+
if listUsersOptions.Search != nil {
214+
builder.AddQuery("search", fmt.Sprint(*listUsersOptions.Search))
215+
}
210216
if listUsersOptions.Start != nil {
211217
builder.AddQuery("_start", fmt.Sprint(*listUsersOptions.Start))
212218
}
@@ -994,6 +1000,16 @@ type ListUsersOptions struct {
9941000
// The number of results to be returned.
9951001
Limit *int64 `json:"limit,omitempty"`
9961002

1003+
// The user settings to be returned. Set to true to view language, allowed IP address, and authentication settings.
1004+
IncludeSettings *bool `json:"include_settings,omitempty"`
1005+
1006+
// The desired search results to be returned. To view the list of users with the additional search filter, use the
1007+
// following query options: `firstname`, `lastname`, `email`, `state`, `substate`, `iam_id`, `realm`, and `userId`.
1008+
// HTML URL encoding for the search query and `:` must be used. For example, search=state%3AINVALID returns a list of
1009+
// invalid users. Multiple search queries can be combined to obtain `OR` results using `,` operator (not URL encoded).
1010+
// For example, search=state%3AINVALID,email%3Amail.test.ibm.com.
1011+
Search *string `json:"search,omitempty"`
1012+
9971013
// An optional token that indicates the beginning of the page of results to be returned. If omitted, the first page of
9981014
// results is returned. This value is obtained from the 'next_url' field of the operation response.
9991015
Start *string `json:"_start,omitempty"`
@@ -1024,6 +1040,18 @@ func (_options *ListUsersOptions) SetLimit(limit int64) *ListUsersOptions {
10241040
return _options
10251041
}
10261042

1043+
// SetIncludeSettings : Allow user to set IncludeSettings
1044+
func (_options *ListUsersOptions) SetIncludeSettings(includeSettings bool) *ListUsersOptions {
1045+
_options.IncludeSettings = core.BoolPtr(includeSettings)
1046+
return _options
1047+
}
1048+
1049+
// SetSearch : Allow user to set Search
1050+
func (_options *ListUsersOptions) SetSearch(search string) *ListUsersOptions {
1051+
_options.Search = core.StringPtr(search)
1052+
return _options
1053+
}
1054+
10271055
// SetStart : Allow user to set Start
10281056
func (_options *ListUsersOptions) SetStart(start string) *ListUsersOptions {
10291057
_options.Start = core.StringPtr(start)

usermanagementv1/user_management_v1_examples_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ package usermanagementv1_test
2222
import (
2323
"encoding/json"
2424
"fmt"
25-
"os"
26-
"time"
27-
2825
"github.com/IBM/go-sdk-core/v5/core"
2926
"github.com/IBM/platform-services-go-sdk/usermanagementv1"
3027
. "github.com/onsi/ginkgo"
3128
. "github.com/onsi/gomega"
29+
"os"
30+
"time"
3231
)
3332

3433
var _ = Describe(`UserManagementV1 Examples Tests`, func() {
@@ -192,14 +191,15 @@ var _ = Describe(`UserManagementV1 Examples Tests`, func() {
192191
fmt.Println("\nListUsers() result:")
193192
// begin-list_users
194193
listUsersOptions := &usermanagementv1.ListUsersOptions{
195-
AccountID: &accountID,
194+
AccountID: &accountID,
195+
IncludeSettings: core.BoolPtr(true),
196+
Search: core.StringPtr("state:ACTIVE"),
196197
}
197198

198199
pager, err := userManagementService.NewUsersPager(listUsersOptions)
199200
if err != nil {
200201
panic(err)
201202
}
202-
203203
var allResults []usermanagementv1.UserProfile
204204
for pager.HasNext() {
205205
nextPage, err := pager.GetNext()

usermanagementv1/user_management_v1_integration_test.go

+66-8
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@ package usermanagementv1_test
2121

2222
import (
2323
"fmt"
24-
"log"
25-
"os"
26-
"time"
27-
2824
"github.com/IBM/go-sdk-core/v5/core"
2925
common "github.com/IBM/platform-services-go-sdk/common"
3026
"github.com/IBM/platform-services-go-sdk/usermanagementv1"
3127
. "github.com/onsi/ginkgo"
3228
. "github.com/onsi/gomega"
29+
"log"
30+
"os"
31+
"time"
3332
)
3433

3534
/**
@@ -159,10 +158,9 @@ var _ = Describe(`UserManagementV1 Integration Tests`, func() {
159158
It(`UpdateUserSettings(updateUserSettingsOptions *UpdateUserSettingsOptions)`, func() {
160159

161160
updateUserSettingsOptions := &usermanagementv1.UpdateUserSettingsOptions{
162-
AccountID: &accountID,
163-
IamID: &userID,
164-
AllowedIPAddresses: core.StringPtr("32.96.110.50,172.16.254.1"),
165-
SelfManage: core.BoolPtr(true),
161+
AccountID: &accountID,
162+
IamID: &userID,
163+
SelfManage: core.BoolPtr(true),
166164
}
167165

168166
response, err := userManagementService.UpdateUserSettings(updateUserSettingsOptions)
@@ -205,6 +203,66 @@ var _ = Describe(`UserManagementV1 Integration Tests`, func() {
205203

206204
fmt.Fprintf(GinkgoWriter, "Received a total of %d user profiles.\n", len(results))
207205
})
206+
It(`ListUsers(listUsersOptions *ListUsersOptions) using search`, func() {
207+
208+
results := []usermanagementv1.UserProfile{}
209+
var moreResults bool = true
210+
var pageStart *string = nil
211+
for moreResults {
212+
listUsersOptions := &usermanagementv1.ListUsersOptions{
213+
AccountID: &accountID,
214+
Search: core.StringPtr("state:ACTIVE"),
215+
Start: pageStart,
216+
}
217+
result, response, err := userManagementService.ListUsers(listUsersOptions)
218+
Expect(err).To(BeNil())
219+
Expect(response.StatusCode).To(Equal(200))
220+
Expect(result).ToNot(BeNil())
221+
// fmt.Fprintf(GinkgoWriter, "ListUsers() result:\n%s\n", common.ToJSON(result))
222+
223+
results = append(results, result.Resources...)
224+
225+
if result.NextURL != nil {
226+
pageStart, err = core.GetQueryParam(result.NextURL, "_start")
227+
Expect(err).To(BeNil())
228+
} else {
229+
moreResults = false
230+
}
231+
}
232+
233+
fmt.Fprintf(GinkgoWriter, "Received a total of %d user profiles.\n", len(results))
234+
})
235+
It(`ListUsers(listUsersOptions *ListUsersOptions) using include_settings`, func() {
236+
237+
results := []usermanagementv1.UserProfile{}
238+
var moreResults bool = true
239+
var pageStart *string = nil
240+
241+
for moreResults {
242+
listUsersOptions := &usermanagementv1.ListUsersOptions{
243+
AccountID: &accountID,
244+
IncludeSettings: core.BoolPtr(true),
245+
Limit: core.Int64Ptr(10),
246+
Start: pageStart,
247+
}
248+
result, response, err := userManagementService.ListUsers(listUsersOptions)
249+
Expect(err).To(BeNil())
250+
Expect(response.StatusCode).To(Equal(200))
251+
Expect(result).ToNot(BeNil())
252+
// fmt.Fprintf(GinkgoWriter, "ListUsers() result:\n%s\n", common.ToJSON(result))
253+
254+
results = append(results, result.Resources...)
255+
256+
if result.NextURL != nil {
257+
pageStart, err = core.GetQueryParam(result.NextURL, "_start")
258+
Expect(err).To(BeNil())
259+
} else {
260+
moreResults = false
261+
}
262+
}
263+
264+
fmt.Fprintf(GinkgoWriter, "Received a total of %d user profiles.\n", len(results))
265+
})
208266
It(`ListUsers(listUsersOptions *ListUsersOptions) using UsersPager`, func() {
209267
listUsersOptions := &usermanagementv1.ListUsersOptions{
210268
AccountID: &accountID,

usermanagementv1/user_management_v1_suite_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* (C) Copyright IBM Corp. 2021.
2+
* (C) Copyright IBM Corp. 2023.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.

usermanagementv1/user_management_v1_test.go

+25-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* (C) Copyright IBM Corp. 2022.
2+
* (C) Copyright IBM Corp. 2023.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -174,6 +174,8 @@ var _ = Describe(`UserManagementV1`, func() {
174174
Expect(req.URL.EscapedPath()).To(Equal(listUsersPath))
175175
Expect(req.Method).To(Equal("GET"))
176176
Expect(req.URL.Query()["limit"]).To(Equal([]string{fmt.Sprint(int64(10))}))
177+
// TODO: Add check for include_settings query parameter
178+
Expect(req.URL.Query()["search"]).To(Equal([]string{"testString"}))
177179
Expect(req.URL.Query()["_start"]).To(Equal([]string{"testString"}))
178180
Expect(req.URL.Query()["user_id"]).To(Equal([]string{"testString"}))
179181
res.Header().Set("Content-type", "application/json")
@@ -193,6 +195,8 @@ var _ = Describe(`UserManagementV1`, func() {
193195
listUsersOptionsModel := new(usermanagementv1.ListUsersOptions)
194196
listUsersOptionsModel.AccountID = core.StringPtr("testString")
195197
listUsersOptionsModel.Limit = core.Int64Ptr(int64(10))
198+
listUsersOptionsModel.IncludeSettings = core.BoolPtr(true)
199+
listUsersOptionsModel.Search = core.StringPtr("testString")
196200
listUsersOptionsModel.Start = core.StringPtr("testString")
197201
listUsersOptionsModel.UserID = core.StringPtr("testString")
198202
listUsersOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"}
@@ -226,6 +230,8 @@ var _ = Describe(`UserManagementV1`, func() {
226230
Expect(req.Method).To(Equal("GET"))
227231

228232
Expect(req.URL.Query()["limit"]).To(Equal([]string{fmt.Sprint(int64(10))}))
233+
// TODO: Add check for include_settings query parameter
234+
Expect(req.URL.Query()["search"]).To(Equal([]string{"testString"}))
229235
Expect(req.URL.Query()["_start"]).To(Equal([]string{"testString"}))
230236
Expect(req.URL.Query()["user_id"]).To(Equal([]string{"testString"}))
231237
// Sleep a short time to support a timeout test
@@ -250,6 +256,8 @@ var _ = Describe(`UserManagementV1`, func() {
250256
listUsersOptionsModel := new(usermanagementv1.ListUsersOptions)
251257
listUsersOptionsModel.AccountID = core.StringPtr("testString")
252258
listUsersOptionsModel.Limit = core.Int64Ptr(int64(10))
259+
listUsersOptionsModel.IncludeSettings = core.BoolPtr(true)
260+
listUsersOptionsModel.Search = core.StringPtr("testString")
253261
listUsersOptionsModel.Start = core.StringPtr("testString")
254262
listUsersOptionsModel.UserID = core.StringPtr("testString")
255263
listUsersOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"}
@@ -289,6 +297,8 @@ var _ = Describe(`UserManagementV1`, func() {
289297
Expect(req.Method).To(Equal("GET"))
290298

291299
Expect(req.URL.Query()["limit"]).To(Equal([]string{fmt.Sprint(int64(10))}))
300+
// TODO: Add check for include_settings query parameter
301+
Expect(req.URL.Query()["search"]).To(Equal([]string{"testString"}))
292302
Expect(req.URL.Query()["_start"]).To(Equal([]string{"testString"}))
293303
Expect(req.URL.Query()["user_id"]).To(Equal([]string{"testString"}))
294304
// Set mock response
@@ -315,6 +325,8 @@ var _ = Describe(`UserManagementV1`, func() {
315325
listUsersOptionsModel := new(usermanagementv1.ListUsersOptions)
316326
listUsersOptionsModel.AccountID = core.StringPtr("testString")
317327
listUsersOptionsModel.Limit = core.Int64Ptr(int64(10))
328+
listUsersOptionsModel.IncludeSettings = core.BoolPtr(true)
329+
listUsersOptionsModel.Search = core.StringPtr("testString")
318330
listUsersOptionsModel.Start = core.StringPtr("testString")
319331
listUsersOptionsModel.UserID = core.StringPtr("testString")
320332
listUsersOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"}
@@ -338,6 +350,8 @@ var _ = Describe(`UserManagementV1`, func() {
338350
listUsersOptionsModel := new(usermanagementv1.ListUsersOptions)
339351
listUsersOptionsModel.AccountID = core.StringPtr("testString")
340352
listUsersOptionsModel.Limit = core.Int64Ptr(int64(10))
353+
listUsersOptionsModel.IncludeSettings = core.BoolPtr(true)
354+
listUsersOptionsModel.Search = core.StringPtr("testString")
341355
listUsersOptionsModel.Start = core.StringPtr("testString")
342356
listUsersOptionsModel.UserID = core.StringPtr("testString")
343357
listUsersOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"}
@@ -382,6 +396,8 @@ var _ = Describe(`UserManagementV1`, func() {
382396
listUsersOptionsModel := new(usermanagementv1.ListUsersOptions)
383397
listUsersOptionsModel.AccountID = core.StringPtr("testString")
384398
listUsersOptionsModel.Limit = core.Int64Ptr(int64(10))
399+
listUsersOptionsModel.IncludeSettings = core.BoolPtr(true)
400+
listUsersOptionsModel.Search = core.StringPtr("testString")
385401
listUsersOptionsModel.Start = core.StringPtr("testString")
386402
listUsersOptionsModel.UserID = core.StringPtr("testString")
387403
listUsersOptionsModel.Headers = map[string]string{"x-custom-header": "x-custom-value"}
@@ -457,6 +473,8 @@ var _ = Describe(`UserManagementV1`, func() {
457473
listUsersOptionsModel := &usermanagementv1.ListUsersOptions{
458474
AccountID: core.StringPtr("testString"),
459475
Limit: core.Int64Ptr(int64(10)),
476+
IncludeSettings: core.BoolPtr(true),
477+
Search: core.StringPtr("testString"),
460478
UserID: core.StringPtr("testString"),
461479
}
462480

@@ -484,6 +502,8 @@ var _ = Describe(`UserManagementV1`, func() {
484502
listUsersOptionsModel := &usermanagementv1.ListUsersOptions{
485503
AccountID: core.StringPtr("testString"),
486504
Limit: core.Int64Ptr(int64(10)),
505+
IncludeSettings: core.BoolPtr(true),
506+
Search: core.StringPtr("testString"),
487507
UserID: core.StringPtr("testString"),
488508
}
489509

@@ -1840,12 +1860,16 @@ var _ = Describe(`UserManagementV1`, func() {
18401860
listUsersOptionsModel := userManagementService.NewListUsersOptions(accountID)
18411861
listUsersOptionsModel.SetAccountID("testString")
18421862
listUsersOptionsModel.SetLimit(int64(10))
1863+
listUsersOptionsModel.SetIncludeSettings(true)
1864+
listUsersOptionsModel.SetSearch("testString")
18431865
listUsersOptionsModel.SetStart("testString")
18441866
listUsersOptionsModel.SetUserID("testString")
18451867
listUsersOptionsModel.SetHeaders(map[string]string{"foo": "bar"})
18461868
Expect(listUsersOptionsModel).ToNot(BeNil())
18471869
Expect(listUsersOptionsModel.AccountID).To(Equal(core.StringPtr("testString")))
18481870
Expect(listUsersOptionsModel.Limit).To(Equal(core.Int64Ptr(int64(10))))
1871+
Expect(listUsersOptionsModel.IncludeSettings).To(Equal(core.BoolPtr(true)))
1872+
Expect(listUsersOptionsModel.Search).To(Equal(core.StringPtr("testString")))
18491873
Expect(listUsersOptionsModel.Start).To(Equal(core.StringPtr("testString")))
18501874
Expect(listUsersOptionsModel.UserID).To(Equal(core.StringPtr("testString")))
18511875
Expect(listUsersOptionsModel.Headers).To(Equal(map[string]string{"foo": "bar"}))

0 commit comments

Comments
 (0)