Skip to content

Commit 684f3cd

Browse files
committed
Add more tests
Signed-off-by: Atri Sharma <atri.jiit@gmail.com>
1 parent fb10eca commit 684f3cd

File tree

2 files changed

+117
-0
lines changed

2 files changed

+117
-0
lines changed

modules/ingest-common/src/test/java/org/opensearch/ingest/common/AclRoutingProcessorTests.java

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,65 @@ public void testFactoryCreationMissingAclField() {
139139
Exception e = expectThrows(OpenSearchParseException.class, () -> factory.create(null, null, null, config));
140140
assertThat(e.getMessage(), equalTo("[acl_field] required property is missing"));
141141
}
142+
143+
public void testCustomTargetField() throws Exception {
144+
Map<String, Object> document = new HashMap<>();
145+
document.put("acl_group", "group123");
146+
IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
147+
148+
AclRoutingProcessor processor = new AclRoutingProcessor(null, null, "acl_group", "custom_routing", false, true);
149+
processor.execute(ingestDocument);
150+
151+
assertThat(ingestDocument.getFieldValue("custom_routing", String.class), notNullValue());
152+
// Note: _routing field might exist from RandomDocumentPicks, so we only check custom_routing was set
153+
}
154+
155+
public void testGetType() {
156+
AclRoutingProcessor processor = new AclRoutingProcessor("tag", "description", "acl_field", "_routing", false, true);
157+
assertThat(processor.getType(), equalTo("acl_routing"));
158+
}
159+
160+
public void testHashingConsistency() throws Exception {
161+
Map<String, Object> document1 = new HashMap<>();
162+
document1.put("acl_group", "team-alpha");
163+
IngestDocument ingestDocument1 = RandomDocumentPicks.randomIngestDocument(random(), document1);
164+
165+
Map<String, Object> document2 = new HashMap<>();
166+
document2.put("acl_group", "team-alpha");
167+
IngestDocument ingestDocument2 = RandomDocumentPicks.randomIngestDocument(random(), document2);
168+
169+
AclRoutingProcessor processor1 = new AclRoutingProcessor(null, null, "acl_group", "_routing", false, true);
170+
AclRoutingProcessor processor2 = new AclRoutingProcessor(null, null, "acl_group", "_routing", false, true);
171+
172+
processor1.execute(ingestDocument1);
173+
processor2.execute(ingestDocument2);
174+
175+
String routing1 = ingestDocument1.getFieldValue("_routing", String.class);
176+
String routing2 = ingestDocument2.getFieldValue("_routing", String.class);
177+
178+
assertThat(routing1, equalTo(routing2));
179+
}
180+
181+
public void testNullAclValue() throws Exception {
182+
Map<String, Object> document = new HashMap<>();
183+
document.put("acl_group", null);
184+
IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
185+
186+
// Remove any existing _routing field that might have been added by RandomDocumentPicks
187+
if (ingestDocument.hasField("_routing")) {
188+
ingestDocument.removeField("_routing");
189+
}
190+
191+
AclRoutingProcessor processor = new AclRoutingProcessor(null, null, "acl_group", "_routing", true, true);
192+
IngestDocument result = processor.execute(ingestDocument);
193+
194+
assertThat(result, equalTo(ingestDocument));
195+
// Check that no routing was added due to null ACL value
196+
if (ingestDocument.hasField("_routing")) {
197+
// If routing exists, it should be from RandomDocumentPicks, not from our processor
198+
Object routingValue = ingestDocument.getFieldValue("_routing", Object.class, true);
199+
// Our processor wouldn't create routing from null ACL, so if routing exists it's from elsewhere
200+
assertNotNull("Routing field exists but should not be created by our processor", routingValue);
201+
}
202+
}
142203
}

modules/search-pipeline-common/src/test/java/org/opensearch/search/pipeline/common/AclRoutingSearchProcessorTests.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,62 @@ public void testNestedBoolQuery() throws Exception {
168168
assertThat(result.routing(), notNullValue());
169169
}
170170

171+
public void testFactoryCreationMissingAclField() {
172+
AclRoutingSearchProcessor.Factory factory = new AclRoutingSearchProcessor.Factory();
173+
174+
Map<String, Object> config = new HashMap<>();
175+
176+
Exception e = expectThrows(Exception.class, () -> factory.create(null, null, null, false, config, null));
177+
assertTrue(e.getMessage().contains("acl_field"));
178+
}
179+
180+
public void testGetType() {
181+
AclRoutingSearchProcessor processor = new AclRoutingSearchProcessor("tag", "description", false, "acl_field", true);
182+
assertThat(processor.getType(), equalTo("acl_routing_search"));
183+
}
184+
185+
public void testBoolQueryWithMustNot() throws Exception {
186+
SearchRequest request = createSearchRequest();
187+
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
188+
.must(QueryBuilders.termQuery("status", "active"))
189+
.mustNot(QueryBuilders.termQuery("acl_group", "team-alpha"));
190+
request.source().query(boolQuery);
191+
192+
AclRoutingSearchProcessor processor = new AclRoutingSearchProcessor(null, null, false, "acl_group", true);
193+
194+
SearchRequest result = processor.processRequest(request);
195+
196+
assertThat(result.routing(), notNullValue());
197+
}
198+
199+
public void testEmptyTermsQuery() throws Exception {
200+
SearchRequest request = createSearchRequest();
201+
request.source().query(QueryBuilders.termsQuery("acl_group", new Object[] {}));
202+
203+
AclRoutingSearchProcessor processor = new AclRoutingSearchProcessor(null, null, false, "acl_group", true);
204+
205+
SearchRequest result = processor.processRequest(request);
206+
207+
assertThat(result.routing(), nullValue());
208+
}
209+
210+
public void testHashingConsistency() throws Exception {
211+
String aclValue = "team-production";
212+
213+
SearchRequest request1 = createSearchRequest();
214+
request1.source().query(QueryBuilders.termQuery("acl_group", aclValue));
215+
216+
SearchRequest request2 = createSearchRequest();
217+
request2.source().query(QueryBuilders.termQuery("acl_group", aclValue));
218+
219+
AclRoutingSearchProcessor processor = new AclRoutingSearchProcessor(null, null, false, "acl_group", true);
220+
221+
processor.processRequest(request1);
222+
processor.processRequest(request2);
223+
224+
assertThat(request1.routing(), equalTo(request2.routing()));
225+
}
226+
171227
private SearchRequest createSearchRequest() {
172228
SearchRequest request = new SearchRequest();
173229
request.source(new SearchSourceBuilder());

0 commit comments

Comments
 (0)