14
14
import org .elasticsearch .xpack .core .security .user .User ;
15
15
import org .elasticsearch .xpack .security .ingest .SetSecurityUserProcessor .Property ;
16
16
17
+ import java .util .Arrays ;
17
18
import java .util .EnumSet ;
18
19
import java .util .HashMap ;
19
20
import java .util .List ;
@@ -37,9 +38,7 @@ public void testProcessor() throws Exception {
37
38
Map <String , Object > result = ingestDocument .getFieldValue ("_field" , Map .class );
38
39
assertThat (result .size (), equalTo (5 ));
39
40
assertThat (result .get ("username" ), equalTo ("_username" ));
40
- assertThat (((List ) result .get ("roles" )).size (), equalTo (2 ));
41
- assertThat (((List ) result .get ("roles" )).get (0 ), equalTo ("role1" ));
42
- assertThat (((List ) result .get ("roles" )).get (1 ), equalTo ("role2" ));
41
+ assertThat (result .get ("roles" ), equalTo (Arrays .asList ("role1" , "role2" )));
43
42
assertThat (result .get ("full_name" ), equalTo ("firstname lastname" ));
44
43
assertThat (result .get ("email" ), equalTo ("_email" ));
45
44
assertThat (((Map ) result .get ("metadata" )).size (), equalTo (1 ));
@@ -93,9 +92,7 @@ public void testRolesProperties() throws Exception {
93
92
@ SuppressWarnings ("unchecked" )
94
93
Map <String , Object > result = ingestDocument .getFieldValue ("_field" , Map .class );
95
94
assertThat (result .size (), equalTo (1 ));
96
- assertThat (((List ) result .get ("roles" )).size (), equalTo (2 ));
97
- assertThat (((List ) result .get ("roles" )).get (0 ), equalTo ("role1" ));
98
- assertThat (((List ) result .get ("roles" )).get (1 ), equalTo ("role2" ));
95
+ assertThat (result .get ("roles" ), equalTo (Arrays .asList ("role1" , "role2" )));
99
96
}
100
97
101
98
public void testFullNameProperties () throws Exception {
@@ -147,4 +144,33 @@ public void testMetadataProperties() throws Exception {
147
144
assertThat (((Map ) result .get ("metadata" )).get ("key" ), equalTo ("value" ));
148
145
}
149
146
147
+ public void testOverwriteExistingField () throws Exception {
148
+ ThreadContext threadContext = new ThreadContext (Settings .EMPTY );
149
+ User user = new User ("_username" , null , null );
150
+ Authentication .RealmRef realmRef = new Authentication .RealmRef ("_name" , "_type" , "_node_name" );
151
+ threadContext .putTransient (AuthenticationField .AUTHENTICATION_KEY , new Authentication (user , realmRef , null ));
152
+
153
+ SetSecurityUserProcessor processor = new SetSecurityUserProcessor ("_tag" , threadContext , "_field" , EnumSet .of (Property .USERNAME ));
154
+
155
+ IngestDocument ingestDocument = new IngestDocument (new HashMap <>(), new HashMap <>());
156
+ ingestDocument .setFieldValue ("_field" , "test" );
157
+ processor .execute (ingestDocument );
158
+
159
+ @ SuppressWarnings ("unchecked" )
160
+ Map <String , Object > result = ingestDocument .getFieldValue ("_field" , Map .class );
161
+ assertThat (result .size (), equalTo (1 ));
162
+ assertThat (result .get ("username" ), equalTo ("_username" ));
163
+
164
+ ingestDocument = new IngestDocument (new HashMap <>(), new HashMap <>());
165
+ ingestDocument .setFieldValue ("_field.other" , "test" );
166
+ ingestDocument .setFieldValue ("_field.username" , "test" );
167
+ processor .execute (ingestDocument );
168
+
169
+ @ SuppressWarnings ("unchecked" )
170
+ Map <String , Object > result2 = ingestDocument .getFieldValue ("_field" , Map .class );
171
+ assertThat (result2 .size (), equalTo (2 ));
172
+ assertThat (result2 .get ("username" ), equalTo ("_username" ));
173
+ assertThat (result2 .get ("other" ), equalTo ("test" ));
174
+ }
175
+
150
176
}
0 commit comments