@@ -2110,6 +2110,108 @@ func TestGetUsers(t *testing.T) {
21102110 require .Equal (t , res .Users [0 ].Username , "bob" )
21112111 require .Equal (t , res .Users [0 ].LoginType , codersdk .LoginTypeOIDC )
21122112 })
2113+
2114+ t .Run ("NameFilter" , func (t * testing.T ) {
2115+ t .Parallel ()
2116+ client := coderdtest .New (t , nil )
2117+ first := coderdtest .CreateFirstUser (t , client )
2118+ ctx := testutil .Context (t , testutil .WaitLong )
2119+
2120+ // Create users with different display names
2121+ _ , err := client .CreateUserWithOrgs (ctx , codersdk.CreateUserRequestWithOrgs {
2122+ 2123+ Username : "alice" ,
2124+ Name : "Alice Smith" ,
2125+ OrganizationIDs : []uuid.UUID {first .OrganizationID },
2126+ UserLoginType : codersdk .LoginTypeNone ,
2127+ })
2128+ require .NoError (t , err )
2129+
2130+ _ , err = client .CreateUserWithOrgs (ctx , codersdk.CreateUserRequestWithOrgs {
2131+ 2132+ Username : "bob" ,
2133+ Name : "Bob Johnson" ,
2134+ OrganizationIDs : []uuid.UUID {first .OrganizationID },
2135+ UserLoginType : codersdk .LoginTypeNone ,
2136+ })
2137+ require .NoError (t , err )
2138+
2139+ _ , err = client .CreateUserWithOrgs (ctx , codersdk.CreateUserRequestWithOrgs {
2140+ 2141+ Username : "charlie" ,
2142+ Name : "Charlie Smith" ,
2143+ OrganizationIDs : []uuid.UUID {first .OrganizationID },
2144+ UserLoginType : codersdk .LoginTypeNone ,
2145+ })
2146+ require .NoError (t , err )
2147+
2148+ // Filter by name "Smith" should return Alice and Charlie
2149+ res , err := client .Users (ctx , codersdk.UsersRequest {
2150+ Name : "Smith" ,
2151+ })
2152+ require .NoError (t , err )
2153+ require .Len (t , res .Users , 2 )
2154+ usernames := []string {res .Users [0 ].Username , res .Users [1 ].Username }
2155+ require .ElementsMatch (t , []string {"alice" , "charlie" }, usernames )
2156+
2157+ // Filter by name "Alice" should return only Alice
2158+ res , err = client .Users (ctx , codersdk.UsersRequest {
2159+ Name : "Alice" ,
2160+ })
2161+ require .NoError (t , err )
2162+ require .Len (t , res .Users , 1 )
2163+ require .Equal (t , "alice" , res .Users [0 ].Username )
2164+
2165+ // Filter by name "Johnson" should return only Bob
2166+ res , err = client .Users (ctx , codersdk.UsersRequest {
2167+ Name : "Johnson" ,
2168+ })
2169+ require .NoError (t , err )
2170+ require .Len (t , res .Users , 1 )
2171+ require .Equal (t , "bob" , res .Users [0 ].Username )
2172+
2173+ // Filter by name that doesn't exist should return no users
2174+ res , err = client .Users (ctx , codersdk.UsersRequest {
2175+ Name : "Nonexistent" ,
2176+ })
2177+ require .NoError (t , err )
2178+ require .Len (t , res .Users , 0 )
2179+ })
2180+
2181+ t .Run ("NameFilterWithSearchFilter" , func (t * testing.T ) {
2182+ t .Parallel ()
2183+ client := coderdtest .New (t , nil )
2184+ first := coderdtest .CreateFirstUser (t , client )
2185+ ctx := testutil .Context (t , testutil .WaitLong )
2186+
2187+ // Create users with different display names and usernames
2188+ _ , err := client .CreateUserWithOrgs (ctx , codersdk.CreateUserRequestWithOrgs {
2189+ 2190+ Username : "alice" ,
2191+ Name : "Alice Developer" ,
2192+ OrganizationIDs : []uuid.UUID {first .OrganizationID },
2193+ UserLoginType : codersdk .LoginTypeNone ,
2194+ })
2195+ require .NoError (t , err )
2196+
2197+ _ , err = client .CreateUserWithOrgs (ctx , codersdk.CreateUserRequestWithOrgs {
2198+ 2199+ Username : "bobdev" ,
2200+ Name : "Bob Developer" ,
2201+ OrganizationIDs : []uuid.UUID {first .OrganizationID },
2202+ UserLoginType : codersdk .LoginTypeNone ,
2203+ })
2204+ require .NoError (t , err )
2205+
2206+ // Filter by name "Developer" and search "alice" should return only Alice
2207+ // because name matches both but search matches only alice's username
2208+ res , err := client .Users (ctx , codersdk.UsersRequest {
2209+ SearchQuery : "name:Developer search:alice" ,
2210+ })
2211+ require .NoError (t , err )
2212+ require .Len (t , res .Users , 1 )
2213+ require .Equal (t , "alice" , res .Users [0 ].Username )
2214+ })
21132215}
21142216
21152217func TestGetUsersPagination (t * testing.T ) {
0 commit comments