MCPcopy Index your code
hub / github.com/coder/coder / UsersFilter

Function UsersFilter

coderd/coderdtest/users.go:132–622  ·  view source on GitHub ↗

UsersFilter creates a set of users to run various filters against for testing. It can be used to test filtering both users and group members.

(
	setupCtx context.Context,
	t *testing.T,
	client *codersdk.Client,
	db database.Store,
	options *UsersFilterOptions,
	setup func(users []codersdk.User),
	fetch func(ctx context.Context, req codersdk.UsersRequest) []codersdk.ReducedUser,
)

Source from the content-addressed store, hash-verified

130// UsersFilter creates a set of users to run various filters against for
131// testing. It can be used to test filtering both users and group members.
132func UsersFilter(
133 setupCtx context.Context,
134 t *testing.T,
135 client *codersdk.Client,
136 db database.Store,
137 options *UsersFilterOptions,
138 setup func(users []codersdk.User),
139 fetch func(ctx context.Context, req codersdk.UsersRequest) []codersdk.ReducedUser,
140) {
141 t.Helper()
142
143 if options == nil {
144 options = &UsersFilterOptions{}
145 }
146
147 firstUser, err := client.User(setupCtx, codersdk.Me)
148 require.NoError(t, err, "fetch me")
149
150 // Noon on Jan 18 is the "now" for this test for last_seen timestamps.
151 // All these values are equal
152 // 2023-01-18T12:00:00Z (UTC)
153 // 2023-01-18T07:00:00-05:00 (America/New_York)
154 // 2023-01-18T13:00:00+01:00 (Europe/Madrid)
155 // 2023-01-16T00:00:00+12:00 (Asia/Anadyr)
156 lastSeenNow := time.Date(2023, 1, 18, 12, 0, 0, 0, time.UTC)
157 users := make([]codersdk.User, 0)
158 users = append(users, firstUser)
159 orgID := firstUser.OrganizationIDs[0]
160 githubIDs := make(map[int]uuid.UUID)
161 for i := range 15 {
162 roles := []rbac.RoleIdentifier{}
163 if i%2 == 0 {
164 roles = append(roles, rbac.RoleTemplateAdmin(), rbac.RoleUserAdmin())
165 }
166 if i%3 == 0 {
167 roles = append(roles, rbac.RoleAuditor())
168 }
169 userClient, userData := CreateAnotherUserMutators(t, client, orgID, roles, func(r *codersdk.CreateUserRequestWithOrgs) {
170 switch {
171 case i%7 == 0:
172 r.UserLoginType = codersdk.LoginTypeGithub
173 r.Password = ""
174 case i%6 == 0:
175 r.UserLoginType = codersdk.LoginTypeOIDC
176 r.Password = ""
177 default:
178 r.UserLoginType = codersdk.LoginTypePassword
179 }
180 })
181
182 // Set the last seen for each user to a unique day
183 // nolint:gocritic // Setting up unit test data.
184 _, err := db.UpdateUserLastSeenAt(dbauthz.AsSystemRestricted(setupCtx), database.UpdateUserLastSeenAtParams{
185 ID: userData.ID,
186 LastSeenAt: lastSeenNow.Add(-1 * time.Hour * 24 * time.Duration(i)),
187 UpdatedAt: time.Now(),
188 })
189 require.NoError(t, err, "set a last seen")

Callers 3

TestGetOrgMembersFilterFunction · 0.92
TestGetUsersFilterFunction · 0.92

Calls 15

RoleTemplateAdminFunction · 0.92
RoleUserAdminFunction · 0.92
RoleAuditorFunction · 0.92
AsSystemRestrictedFunction · 0.92
HashFunction · 0.92
TimeFunction · 0.92
NowFunction · 0.92
UserFunction · 0.92
DurationMethod · 0.80
HelperMethod · 0.65
UserMethod · 0.65

Tested by 3

TestGetOrgMembersFilterFunction · 0.74
TestGetUsersFilterFunction · 0.74