This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 46361578e52f656bf0a5592130eee881cc613a7f
Author: Quan Tran <[email protected]>
AuthorDate: Wed Apr 6 09:33:25 2022 +0700

    JAMES-3739: Add tests for specific index' own settings
---
 .../backends/es/v7/IndexCreationFactoryTest.java   | 77 ++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git 
a/backends-common/elasticsearch-v7/src/test/java/org/apache/james/backends/es/v7/IndexCreationFactoryTest.java
 
b/backends-common/elasticsearch-v7/src/test/java/org/apache/james/backends/es/v7/IndexCreationFactoryTest.java
index 99a399b7a3..5a17a4679a 100644
--- 
a/backends-common/elasticsearch-v7/src/test/java/org/apache/james/backends/es/v7/IndexCreationFactoryTest.java
+++ 
b/backends-common/elasticsearch-v7/src/test/java/org/apache/james/backends/es/v7/IndexCreationFactoryTest.java
@@ -19,12 +19,18 @@
 
 package org.apache.james.backends.es.v7;
 
+import static org.apache.james.backends.es.v7.IndexCreationFactory.ANALYZER;
+import static org.apache.james.backends.es.v7.IndexCreationFactory.TOKENIZER;
+import static org.apache.james.backends.es.v7.IndexCreationFactory.TYPE;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
 
 import java.io.IOException;
+import java.util.Optional;
 
 import 
org.apache.james.backends.es.v7.IndexCreationFactory.IndexCreationCustomElement;
 import org.elasticsearch.ElasticsearchStatusException;
+import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -34,6 +40,59 @@ class IndexCreationFactoryTest {
     private static final IndexName INDEX_NAME = new IndexName("index");
     private static final ReadAliasName ALIAS_NAME = new ReadAliasName("alias");
 
+    public static XContentBuilder getValidIndexSetting() throws IOException {
+        return jsonBuilder()
+            .startObject()
+                .startObject("settings")
+                    .startObject("index")
+                        .field("max_ngram_diff", 10)
+                    .endObject()
+                    .startObject("analysis")
+                        .startObject(ANALYZER)
+                            .startObject("email_ngram_filter_analyzer")
+                                .field(TOKENIZER, "uax_url_email")
+                                .startArray("filter")
+                                    .value("ngram_filter")
+                                .endArray()
+                            .endObject()
+                        .endObject()
+                        .startObject("filter")
+                            .startObject("ngram_filter")
+                                .field(TYPE, "ngram")
+                                .field("min_gram", 3)
+                                .field("max_gram", 13)
+                            .endObject()
+                        .endObject()
+                    .endObject()
+                .endObject()
+            .endObject();
+    }
+
+    public static XContentBuilder getInvalidIndexSetting() throws IOException {
+        return jsonBuilder()
+            .startObject()
+                .startObject("settings")
+                    .startObject("analysis")
+                        .startObject(ANALYZER)
+                            .startObject("email_ngram_filter_analyzer")
+                                .field(TOKENIZER, "uax_url_email")
+                                .startArray("filter")
+                                    .value("ngram_filter")
+                                .endArray()
+                            .endObject()
+                        .endObject()
+                        .startObject("filter")
+                            .startObject("ngram_filter")
+                                .field(TYPE, "ngram")
+                                .field("min_gram", 3)
+                                .field("max_gram", 13)
+                            .endObject()
+                        .endObject()
+                    .endObject()
+                .endObject()
+            .endObject();
+    }
+
     @RegisterExtension
     public DockerElasticSearchExtension elasticSearch = new 
DockerElasticSearchExtension();
     private ReactorElasticSearchClient client;
@@ -158,4 +217,22 @@ class IndexCreationFactoryTest {
             .createIndexAndAliases(client);
     }
 
+    @Test
+    void customIndexSettingShouldNotThrowWhenValidSetting() throws IOException 
{
+        new 
IndexCreationFactory(ElasticSearchConfiguration.DEFAULT_CONFIGURATION)
+            .useIndex(INDEX_NAME)
+            .addAlias(ALIAS_NAME)
+            .createIndexAndAliases(client, 
Optional.of(getValidIndexSetting()), Optional.empty());
+    }
+
+    @Test
+    void customIndexSettingShouldThrowWhenInvalidSetting() {
+        assertThatThrownBy(() ->
+            new 
IndexCreationFactory(ElasticSearchConfiguration.DEFAULT_CONFIGURATION)
+                .useIndex(INDEX_NAME)
+                .addAlias(ALIAS_NAME)
+                .createIndexAndAliases(client, 
Optional.of(getInvalidIndexSetting()), Optional.empty()))
+            .isInstanceOf(ElasticsearchStatusException.class);
+    }
+
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to