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]
