@@ -205,6 +205,87 @@ public void testParseUserStringMalformed() {
205
205
assertNull (user );
206
206
}
207
207
208
+ @ Test
209
+ public void testParseUserStringWithPipeInUserName () {
210
+ ThreadContext tc = new ThreadContext (Settings .EMPTY );
211
+ tc .putTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT , "myuser\\ |test-pipe|bckrole1,bckrol2|role1,role2|myTenant" );
212
+ String str = tc .getTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT );
213
+ User user = User .parse (str );
214
+
215
+ assertEquals ("myuser|test-pipe" , user .getName ());
216
+ assertEquals (2 , user .getBackendRoles ().size ());
217
+ assertEquals (2 , user .getRoles ().size ());
218
+ assertTrue (user .getRoles ().contains ("role1" ));
219
+ assertTrue (user .getRoles ().contains ("role2" ));
220
+ assertEquals ("myTenant" , user .getRequestedTenant ());
221
+ }
222
+
223
+ @ Test
224
+ public void testParseUserStringWithMultiplePipesInUserName () {
225
+ ThreadContext tc = new ThreadContext (Settings .EMPTY );
226
+ tc
227
+ .putTransient (
228
+ OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT ,
229
+ "myuser\\ |test-pipe\\ |test-pipe2|bckrole1,bckrol2|role1,role2|myTenant"
230
+ );
231
+ String str = tc .getTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT );
232
+ User user = User .parse (str );
233
+
234
+ assertEquals ("myuser|test-pipe|test-pipe2" , user .getName ());
235
+ assertEquals (2 , user .getBackendRoles ().size ());
236
+ assertEquals (2 , user .getRoles ().size ());
237
+ assertTrue (user .getRoles ().contains ("role1" ));
238
+ assertTrue (user .getRoles ().contains ("role2" ));
239
+ assertEquals ("myTenant" , user .getRequestedTenant ());
240
+ }
241
+
242
+ @ Test
243
+ public void testParseUserStringWithPipeInBackedRoleName () {
244
+ ThreadContext tc = new ThreadContext (Settings .EMPTY );
245
+ tc .putTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT , "myuser|bckrole1\\ |br1,bckrole2\\ |br2|role1,role2|myTenant" );
246
+ String str = tc .getTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT );
247
+ User user = User .parse (str );
248
+
249
+ assertEquals ("myuser" , user .getName ());
250
+ assertEquals (2 , user .getBackendRoles ().size ());
251
+ assertTrue (user .getBackendRoles ().contains ("bckrole1|br1" ));
252
+ assertTrue (user .getBackendRoles ().contains ("bckrole2|br2" ));
253
+ assertEquals (2 , user .getRoles ().size ());
254
+ assertTrue (user .getRoles ().contains ("role1" ));
255
+ assertTrue (user .getRoles ().contains ("role2" ));
256
+ assertEquals ("myTenant" , user .getRequestedTenant ());
257
+ }
258
+
259
+ @ Test
260
+ public void testParseUserStringWithPipeInRoleName () {
261
+ ThreadContext tc = new ThreadContext (Settings .EMPTY );
262
+ tc .putTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT , "myuser|bckrole1,bckrol2|role1\\ |r1,role2\\ |r2|myTenant" );
263
+ String str = tc .getTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT );
264
+ User user = User .parse (str );
265
+
266
+ assertEquals ("myuser" , user .getName ());
267
+ assertEquals (2 , user .getBackendRoles ().size ());
268
+ assertEquals (2 , user .getRoles ().size ());
269
+ assertTrue (user .getRoles ().contains ("role1|r1" ));
270
+ assertTrue (user .getRoles ().contains ("role2|r2" ));
271
+ assertEquals ("myTenant" , user .getRequestedTenant ());
272
+ }
273
+
274
+ @ Test
275
+ public void testParseUserStringWithPipeInTenantName () {
276
+ ThreadContext tc = new ThreadContext (Settings .EMPTY );
277
+ tc .putTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT , "myuser|bckrole1,bckrol2|role1,role2|myTenant\\ |t1" );
278
+ String str = tc .getTransient (OPENSEARCH_SECURITY_USER_INFO_THREAD_CONTEXT );
279
+ User user = User .parse (str );
280
+
281
+ assertEquals ("myuser" , user .getName ());
282
+ assertEquals (2 , user .getBackendRoles ().size ());
283
+ assertEquals (2 , user .getRoles ().size ());
284
+ assertTrue (user .getRoles ().contains ("role1" ));
285
+ assertTrue (user .getRoles ().contains ("role2" ));
286
+ assertEquals ("myTenant|t1" , user .getRequestedTenant ());
287
+ }
288
+
208
289
@ Test
209
290
public void testUserIsAdminDnTrue () {
210
291
Settings settings = Settings
0 commit comments