diff --git a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/RegisteredDomainProcessorTests.java b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/RegisteredDomainProcessorTests.java
index 0a0666de9b014..7f23e81cce48d 100644
--- a/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/RegisteredDomainProcessorTests.java
+++ b/modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/RegisteredDomainProcessorTests.java
@@ -13,52 +13,45 @@
import org.elasticsearch.ingest.TestIngestDocument;
import org.elasticsearch.test.ESTestCase;
+import java.util.Collections;
import java.util.Map;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.equalTo;
+import static java.util.Map.entry;
+import static org.hamcrest.Matchers.anEmptyMap;
+import static org.hamcrest.Matchers.is;
/**
* Test parsing of an eTLD from a FQDN. The list of eTLDs is maintained here:
* https://github.com/publicsuffix/list/blob/master/public_suffix_list.dat
- *
- * Effective TLDs (eTLS) are not the same as DNS TLDs. Uses for eTLDs are listed here.
+ *
+ * Effective TLDs (eTLDs) are not the same as DNS TLDs. Uses for eTLDs are listed here:
* https://publicsuffix.org/learn/
*/
public class RegisteredDomainProcessorTests extends ESTestCase {
- private Map buildEvent(String domain) {
- return Map.of("domain", domain);
- }
public void testBasic() throws Exception {
- testRegisteredDomainProcessor(buildEvent("www.google.com"), "www.google.com", "google.com", "com", "www");
- testRegisteredDomainProcessor(buildEvent("google.com"), "google.com", "google.com", "com", null);
- testRegisteredDomainProcessor(buildEvent(""), null, null, null, null);
- testRegisteredDomainProcessor(buildEvent("."), null, null, null, null);
- testRegisteredDomainProcessor(buildEvent("$"), null, null, null, null);
- testRegisteredDomainProcessor(buildEvent("foo.bar.baz"), null, null, null, null);
- testRegisteredDomainProcessor(buildEvent("www.books.amazon.co.uk"), "www.books.amazon.co.uk", "amazon.co.uk", "co.uk", "www.books");
+ testRegisteredDomainProcessor("www.google.com", "www.google.com", "google.com", "com", "www");
+ testRegisteredDomainProcessor("google.com", "google.com", "google.com", "com", null);
+ testRegisteredDomainProcessor("", null, null, null, null);
+ testRegisteredDomainProcessor(".", null, null, null, null);
+ testRegisteredDomainProcessor("$", null, null, null, null);
+ testRegisteredDomainProcessor("foo.bar.baz", null, null, null, null);
+ testRegisteredDomainProcessor("www.books.amazon.co.uk", "www.books.amazon.co.uk", "amazon.co.uk", "co.uk", "www.books");
// Verify "com" is returned as the eTLD, for that FQDN or subdomain
- testRegisteredDomainProcessor(buildEvent("com"), "com", null, "com", null);
- testRegisteredDomainProcessor(buildEvent("example.com"), "example.com", "example.com", "com", null);
- testRegisteredDomainProcessor(buildEvent("googleapis.com"), "googleapis.com", "googleapis.com", "com", null);
+ testRegisteredDomainProcessor("com", "com", null, "com", null);
+ testRegisteredDomainProcessor("example.com", "example.com", "example.com", "com", null);
+ testRegisteredDomainProcessor("googleapis.com", "googleapis.com", "googleapis.com", "com", null);
testRegisteredDomainProcessor(
- buildEvent("content-autofill.googleapis.com"),
+ "content-autofill.googleapis.com",
"content-autofill.googleapis.com",
"googleapis.com",
"com",
"content-autofill"
);
// Verify "ssl.fastly.net" is returned as the eTLD, for that FQDN or subdomain
+ testRegisteredDomainProcessor("global.ssl.fastly.net", "global.ssl.fastly.net", "global.ssl.fastly.net", "ssl.fastly.net", null);
testRegisteredDomainProcessor(
- buildEvent("global.ssl.fastly.net"),
- "global.ssl.fastly.net",
- "global.ssl.fastly.net",
- "ssl.fastly.net",
- null
- );
- testRegisteredDomainProcessor(
- buildEvent("1.www.global.ssl.fastly.net"),
+ "1.www.global.ssl.fastly.net",
"1.www.global.ssl.fastly.net",
"global.ssl.fastly.net",
"ssl.fastly.net",
@@ -67,76 +60,81 @@ public void testBasic() throws Exception {
}
public void testUseRoot() throws Exception {
- Map source = buildEvent("www.google.co.uk");
-
- String domainField = "domain";
- String registeredDomainField = "registered_domain";
- String topLevelDomainField = "top_level_domain";
- String subdomainField = "subdomain";
-
var processor = new RegisteredDomainProcessor(null, null, "domain", "", false);
-
- IngestDocument input = TestIngestDocument.withDefaultVersion(source);
- IngestDocument output = processor.execute(input);
-
- String domain = output.getFieldValue(domainField, String.class);
- assertThat(domain, equalTo("www.google.co.uk"));
- String registeredDomain = output.getFieldValue(registeredDomainField, String.class);
- assertThat(registeredDomain, equalTo("google.co.uk"));
- String eTLD = output.getFieldValue(topLevelDomainField, String.class);
- assertThat(eTLD, equalTo("co.uk"));
- String subdomain = output.getFieldValue(subdomainField, String.class);
- assertThat(subdomain, equalTo("www"));
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Map.of("domain", "www.google.co.uk"));
+ processor.execute(document);
+ assertThat(
+ document.getSource(),
+ is(
+ Map.ofEntries(
+ entry("domain", "www.google.co.uk"),
+ entry("registered_domain", "google.co.uk"),
+ entry("top_level_domain", "co.uk"),
+ entry("subdomain", "www")
+ )
+ )
+ );
}
public void testError() throws Exception {
- IllegalArgumentException e = expectThrows(
- IllegalArgumentException.class,
- () -> testRegisteredDomainProcessor(buildEvent("foo.bar.baz"), null, null, null, null, false)
- );
- assertThat(e.getMessage(), containsString("unable to set domain information for document"));
- e = expectThrows(
- IllegalArgumentException.class,
- () -> testRegisteredDomainProcessor(buildEvent("$"), null, null, null, null, false)
- );
- assertThat(e.getMessage(), containsString("unable to set domain information for document"));
+ var processor = new RegisteredDomainProcessor(null, null, "domain", "", false);
+
+ {
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Map.of("domain", "foo.bar.baz"));
+ IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> processor.execute(document));
+ assertThat(e.getMessage(), is("unable to set domain information for document"));
+ assertThat(document.getSource(), is(Map.of("domain", "foo.bar.baz")));
+ }
+
+ {
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Map.of("domain", "$"));
+ IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> processor.execute(document));
+ assertThat(e.getMessage(), is("unable to set domain information for document"));
+ assertThat(document.getSource(), is(Map.of("domain", "$")));
+ }
}
- private void testRegisteredDomainProcessor(
- Map source,
- String expectedDomain,
- String expectedRegisteredDomain,
- String expectedETLD,
- String expectedSubdomain
- ) throws Exception {
- testRegisteredDomainProcessor(source, expectedDomain, expectedRegisteredDomain, expectedETLD, expectedSubdomain, true);
+ public void testIgnoreMissing() throws Exception {
+ {
+ var processor = new RegisteredDomainProcessor(null, null, "domain", "", false);
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Map.of());
+ IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> processor.execute(document));
+ assertThat(e.getMessage(), is("field [domain] not present as part of path [domain]"));
+ assertThat(document.getSource(), is(anEmptyMap()));
+ }
+
+ {
+ var processor = new RegisteredDomainProcessor(null, null, "domain", "", true);
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Collections.singletonMap("domain", null));
+ processor.execute(document);
+ assertThat(document.getSource(), is(Collections.singletonMap("domain", null)));
+ }
}
private void testRegisteredDomainProcessor(
- Map source,
+ String fqdn,
String expectedDomain,
String expectedRegisteredDomain,
String expectedETLD,
- String expectedSubdomain,
- boolean ignoreMissing
+ String expectedSubdomain
) throws Exception {
String domainField = "url.domain";
String registeredDomainField = "url.registered_domain";
String topLevelDomainField = "url.top_level_domain";
String subdomainField = "url.subdomain";
- var processor = new RegisteredDomainProcessor(null, null, "domain", "url", ignoreMissing);
+ var processor = new RegisteredDomainProcessor(null, null, "domain", "url", true);
- IngestDocument input = TestIngestDocument.withDefaultVersion(source);
- IngestDocument output = processor.execute(input);
+ IngestDocument document = TestIngestDocument.withDefaultVersion(Map.of("domain", fqdn));
+ processor.execute(document);
- String domain = output.getFieldValue(domainField, String.class, expectedDomain == null);
- assertThat(domain, equalTo(expectedDomain));
- String registeredDomain = output.getFieldValue(registeredDomainField, String.class, expectedRegisteredDomain == null);
- assertThat(registeredDomain, equalTo(expectedRegisteredDomain));
- String eTLD = output.getFieldValue(topLevelDomainField, String.class, expectedETLD == null);
- assertThat(eTLD, equalTo(expectedETLD));
- String subdomain = output.getFieldValue(subdomainField, String.class, expectedSubdomain == null);
- assertThat(subdomain, equalTo(expectedSubdomain));
+ String domain = document.getFieldValue(domainField, String.class, expectedDomain == null);
+ assertThat(domain, is(expectedDomain));
+ String registeredDomain = document.getFieldValue(registeredDomainField, String.class, expectedRegisteredDomain == null);
+ assertThat(registeredDomain, is(expectedRegisteredDomain));
+ String eTLD = document.getFieldValue(topLevelDomainField, String.class, expectedETLD == null);
+ assertThat(eTLD, is(expectedETLD));
+ String subdomain = document.getFieldValue(subdomainField, String.class, expectedSubdomain == null);
+ assertThat(subdomain, is(expectedSubdomain));
}
}