package io.searchbox.indices.script; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import static io.searchbox.indices.script.ScriptLanguage.GROOVY; import static io.searchbox.indices.script.ScriptLanguage.JAVASCRIPT; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.*; public class CreateIndexedScriptTest { private static final String A_NAME = "a_name"; private CreateStoredScript script; private CreateStoredScript.Builder builder; private String groovysnippet; @Before public void setUp() throws Exception { builder = new CreateStoredScript.Builder(A_NAME).setLanguage(JAVASCRIPT); script = builder.build(); groovysnippet = "def test_a=123\n" + "def test_b=\"$test_a\"\n"; } @Test public void defaultScriptingLanguageIsGroovy() throws Exception { CreateStoredScript script = new CreateStoredScript.Builder(A_NAME).build(); assertEquals(GROOVY, script.getScriptLanguage()); assertThat(script.buildURI(), containsString(GROOVY.pathParameterName)); } @Test public void methodIsPost() { assertEquals("POST", script.getRestMethodName()); } @Test public void scriptingLanguageIsSetIntoPath() throws Exception { assertThat(script.buildURI(), containsString("/_scripts/" + JAVASCRIPT.pathParameterName + "/")); } @Test public void nameOfTheScriptIsSetIntoPath() throws Exception { assertThat(script.buildURI(), containsString("/_scripts/" + JAVASCRIPT.pathParameterName + "/" + A_NAME)); } @Test public void scriptSourceIsValidJsonString() throws Exception { builder.setSource(groovysnippet); script = builder.build(); JsonObject jsonPayload = parseAsGson(script.getData(new Gson())); assertNotNull(jsonPayload.get("script")); assertEquals(groovysnippet, jsonPayload.get("script").getAsString()); } @Test public void fileSourceIsValidJsonString() throws Exception { builder.loadSource(createTempGroovySnippetFile()); script = builder.build(); JsonObject jsonPayload = parseAsGson(script.getData(new Gson())); assertNotNull(jsonPayload.get("script")); assertEquals(groovysnippet, jsonPayload.get("script").getAsString()); } private File createTempGroovySnippetFile() throws IOException { File file = File.createTempFile("test", ".groovy"); file.deleteOnExit(); FileWriter writer = new FileWriter(file); writer.write(groovysnippet); writer.close(); return file; } private JsonObject parseAsGson(String data) { return new JsonParser().parse(data).getAsJsonObject(); } }