|
|
@@ -0,0 +1,1282 @@
|
|
|
+/*
|
|
|
+ * Licensed to Elasticsearch under one or more contributor
|
|
|
+ * license agreements. See the NOTICE file distributed with
|
|
|
+ * this work for additional information regarding copyright
|
|
|
+ * ownership. Elasticsearch licenses this file to you under
|
|
|
+ * the Apache License, Version 2.0 (the "License"); you may
|
|
|
+ * not use this file except in compliance with the License.
|
|
|
+ * You may obtain a copy of the License at
|
|
|
+ *
|
|
|
+ * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+ *
|
|
|
+ * Unless required by applicable law or agreed to in writing,
|
|
|
+ * software distributed under the License is distributed on an
|
|
|
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
+ * KIND, either express or implied. See the License for the
|
|
|
+ * specific language governing permissions and limitations
|
|
|
+ * under the License.
|
|
|
+ */
|
|
|
+
|
|
|
+package org.elasticsearch.script;
|
|
|
+
|
|
|
+
|
|
|
+import org.elasticsearch.common.bytes.BytesArray;
|
|
|
+import org.elasticsearch.common.xcontent.ToXContent.MapParams;
|
|
|
+import org.elasticsearch.common.xcontent.XContentHelper;
|
|
|
+import org.elasticsearch.common.xcontent.XContentParser;
|
|
|
+import org.elasticsearch.common.xcontent.XContentParser.Token;
|
|
|
+import org.elasticsearch.script.ScriptParameterParser.ScriptParameterParseException;
|
|
|
+import org.elasticsearch.script.ScriptParameterParser.ScriptParameterValue;
|
|
|
+import org.elasticsearch.script.ScriptService.ScriptType;
|
|
|
+import org.elasticsearch.test.ElasticsearchTestCase;
|
|
|
+import org.junit.Test;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+import static org.hamcrest.Matchers.equalTo;
|
|
|
+import static org.hamcrest.Matchers.nullValue;
|
|
|
+
|
|
|
+public class ScriptParameterParserTest extends ElasticsearchTestCase {
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenDefaultInline() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"script\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser = new ScriptParameterParser(null);
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser = new ScriptParameterParser(new HashSet<String>());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenDefaultFile() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"script_file\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+
|
|
|
+ parser = XContentHelper.createParser(new BytesArray("{ \"scriptFile\" : \"scriptValue\" }"));
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+
|
|
|
+ parser = XContentHelper.createParser(new BytesArray("{ \"file\" : \"scriptValue\" }"));
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenDefaultIndexed() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"script_id\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+
|
|
|
+ parser = XContentHelper.createParser(new BytesArray("{ \"scriptId\" : \"scriptValue\" }"));
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenDefaultNotFound() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"bar\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(false));
|
|
|
+ assertThat(paramParser.getDefaultScriptParameterValue(), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("script"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenSingleParameter() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenSingleParameterFile() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_file\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenSingleParameterIndexed() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_id\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceInlineFile() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"scriptValue\", \"foo_file\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceInlineIndexed() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"scriptValue\", \"foo_id\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceFileInline() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_file\" : \"scriptValue\", \"foo\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceFileIndexed() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_file\" : \"scriptValue\", \"foo_id\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceIndexedInline() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_id\" : \"scriptValue\", \"foo\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testTokenSingleParameterDelcaredTwiceIndexedFile() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo_id\" : \"scriptValue\", \"foo_file\" : \"scriptValue\" }"));
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ paramParser.token(parser.currentName(), parser.currentToken(), parser);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenMultipleParameters() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"fooScriptValue\", \"bar_file\" : \"barScriptValue\", \"baz_id\" : \"bazScriptValue\" }"));
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenMultipleParametersWithLang() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"fooScriptValue\", \"bar_file\" : \"barScriptValue\", \"lang\" : \"myLang\", \"baz_id\" : \"bazScriptValue\" }"));
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenMultipleParametersNotFound() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"other\" : \"scriptValue\" }"));
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(false));
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenMultipleParametersSomeNotFound() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"fooScriptValue\", \"other_file\" : \"barScriptValue\", \"baz_id\" : \"bazScriptValue\" }"));
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ Token token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(false));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ token = parser.nextToken();
|
|
|
+ while (token != Token.VALUE_STRING) {
|
|
|
+ token = parser.nextToken();
|
|
|
+ }
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(true));
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTokenMultipleParametersWrongType() throws IOException {
|
|
|
+ XContentParser parser = XContentHelper.createParser(new BytesArray("{ \"foo\" : \"fooScriptValue\", \"bar_file\" : \"barScriptValue\", \"baz_id\" : \"bazScriptValue\" }"));
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(paramParser.token(parser.currentName(), parser.currentToken(), parser), equalTo(false));
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=IllegalArgumentException.class)
|
|
|
+ public void testReservedParameters() {
|
|
|
+ Set<String> parameterNames = Collections.singleton("lang");
|
|
|
+ new ScriptParameterParser(parameterNames );
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigDefaultInline() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("script", "scriptValue");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("script", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser(null);
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("script", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser(new HashSet<String>());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigDefaultFile() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("script_file", "scriptValue");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("scriptFile", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("file", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigDefaultIndexed() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("script_id", "scriptValue");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("scriptId", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigDefaultIndexedNoRemove() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("script_id", "scriptValue");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, false);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.size(), equalTo(1));
|
|
|
+ assertThat((String) config.get("script_id"), equalTo("scriptValue"));
|
|
|
+
|
|
|
+ config = new HashMap<>();
|
|
|
+ config.put("scriptId", "scriptValue");
|
|
|
+ paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, false);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.size(), equalTo(1));
|
|
|
+ assertThat((String) config.get("scriptId"), equalTo("scriptValue"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigDefaultNotFound() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "bar");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertThat(paramParser.getDefaultScriptParameterValue(), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("script"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.size(), equalTo(1));
|
|
|
+ assertThat((String) config.get("foo"), equalTo("bar"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigSingleParameter() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigSingleParameterFile() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigSingleParameterIndexed() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceInlineFile() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceInlineIndexed() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceFileInline() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceFileIndexed() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceIndexedInline() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigSingleParameterDelcaredTwiceIndexedFile() throws IOException {
|
|
|
+ Map<String, Object> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigMultipleParameters() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigMultipleParametersWithLang() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ assertThat(config.isEmpty(), equalTo(true));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigMultipleParametersWithLangNoRemove() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, false);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ assertThat(config.size(), equalTo(4));
|
|
|
+ assertThat((String) config.get("foo"), equalTo("fooScriptValue"));
|
|
|
+ assertThat((String) config.get("bar_file"), equalTo("barScriptValue"));
|
|
|
+ assertThat((String) config.get("baz_id"), equalTo("bazScriptValue"));
|
|
|
+ assertThat((String) config.get("lang"), equalTo("myLang"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigMultipleParametersNotFound() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("other", "scriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.size(), equalTo(1));
|
|
|
+ assertThat((String) config.get("other"), equalTo("scriptValue"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConfigMultipleParametersSomeNotFound() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("other_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ assertThat(config.size(), equalTo(1));
|
|
|
+ assertThat((String) config.get("other_file"), equalTo("barScriptValue"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigMultipleParametersInlineWrongType() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", 1l);
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigMultipleParametersFileWrongType() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", 1l);
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigMultipleParametersIndexedWrongType() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("baz_id", 1l);
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testConfigMultipleParametersLangWrongType() throws IOException {
|
|
|
+ Map<String, Object> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ config.put("lang", 1l);
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ paramParser.parseConfig(config, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsDefaultInline() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("script", "scriptValue");
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+
|
|
|
+ paramParser = new ScriptParameterParser(null);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+
|
|
|
+ paramParser = new ScriptParameterParser(new HashSet<String>());
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsDefaultFile() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("script_file", "scriptValue");
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsDefaultIndexed() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("script_id", "scriptValue");
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertDefaultParameterValue(paramParser, "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsDefaultNotFound() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "bar");
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser();
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertThat(paramParser.getDefaultScriptParameterValue(), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("script"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsSingleParameter() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsSingleParameterFile() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.FILE);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsSingleParameterIndexed() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "scriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceInlineFile() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceInlineIndexed() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceFileInline() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceFileIndexed() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceIndexedInline() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ config.put("foo", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test(expected=ScriptParameterParseException.class)
|
|
|
+ public void testParamsSingleParameterDelcaredTwiceIndexedFile() throws IOException {
|
|
|
+ Map<String, String> config = new LinkedHashMap<>();
|
|
|
+ config.put("foo_id", "scriptValue");
|
|
|
+ config.put("foo_file", "scriptValue");
|
|
|
+ Set<String> parameters = Collections.singleton("foo");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsMultipleParameters() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsMultipleParametersWithLang() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsMultipleParametersWithLangNoRemove() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("bar_file", "barScriptValue");
|
|
|
+ config.put("lang", "myLang");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertParameterValue(paramParser, "bar", "barScriptValue", ScriptType.FILE);
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), equalTo("myLang"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsMultipleParametersNotFound() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("other", "scriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testParamsMultipleParametersSomeNotFound() throws IOException {
|
|
|
+ Map<String, String> config = new HashMap<>();
|
|
|
+ config.put("foo", "fooScriptValue");
|
|
|
+ config.put("other_file", "barScriptValue");
|
|
|
+ config.put("baz_id", "bazScriptValue");
|
|
|
+ Set<String> parameters = new HashSet<>();
|
|
|
+ parameters.add("foo");
|
|
|
+ parameters.add("bar");
|
|
|
+ parameters.add("baz");
|
|
|
+ ScriptParameterParser paramParser = new ScriptParameterParser(parameters);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("foo"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ MapParams params = new MapParams(config);
|
|
|
+ paramParser.parseParams(params);
|
|
|
+ assertParameterValue(paramParser, "foo", "fooScriptValue", ScriptType.INLINE);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar"), nullValue());
|
|
|
+ assertParameterValue(paramParser, "baz", "bazScriptValue", ScriptType.INDEXED);
|
|
|
+ assertThat(paramParser.getScriptParameterValue("bar_file"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("baz_id"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other"), nullValue());
|
|
|
+ assertThat(paramParser.getScriptParameterValue("other_file"), nullValue());
|
|
|
+ assertThat(paramParser.lang(), nullValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertDefaultParameterValue(ScriptParameterParser paramParser, String expectedScript, ScriptType expectedScriptType) throws IOException {
|
|
|
+ ScriptParameterValue defaultValue = paramParser.getDefaultScriptParameterValue();
|
|
|
+ ScriptParameterValue defaultValueByName = paramParser.getScriptParameterValue("script");
|
|
|
+ assertThat(defaultValue.scriptType(), equalTo(expectedScriptType));
|
|
|
+ assertThat(defaultValue.script(), equalTo(expectedScript));
|
|
|
+ assertThat(defaultValueByName.scriptType(), equalTo(expectedScriptType));
|
|
|
+ assertThat(defaultValueByName.script(), equalTo(expectedScript));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void assertParameterValue(ScriptParameterParser paramParser, String parameterName, String expectedScript, ScriptType expectedScriptType) throws IOException {
|
|
|
+ ScriptParameterValue value = paramParser.getScriptParameterValue(parameterName);
|
|
|
+ assertThat(value.scriptType(), equalTo(expectedScriptType));
|
|
|
+ assertThat(value.script(), equalTo(expectedScript));
|
|
|
+ }
|
|
|
+
|
|
|
+}
|