import com.baasbox.dao.ScriptsDao;
import com.baasbox.dao.exception.ScriptException;
import com.baasbox.db.DbHelper;
import com.baasbox.exception.InvalidAppCodeException;
import com.baasbox.service.scripting.ScriptingService;
import com.baasbox.service.scripting.base.ScriptLanguage;
import com.baasbox.service.scripting.js.Json;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.junit.Assert;
import play.Play;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.UUID;
import static org.junit.Assert.fail;
/**
* Created by eto on 30/09/14.
*/
public class ScriptTestHelpers {
public static void createScript(String name,String source){
try {
DbHelper.open("1234567890","admin","admin");
ScriptingService.create(ScriptTestHelpers.loadScript(name, source));
} catch (ScriptException | InvalidAppCodeException e) {
fail(ExceptionUtils.getFullStackTrace(e));
} finally {
DbHelper.close(DbHelper.getConnection());
}
}
public static String randomScriptName(){
return "script.test"+UUID.randomUUID().toString().replace("-","_");
}
public static JsonNode loadScript(String name,String source){
try(InputStream in = Play.application().resourceAsStream(source)){
String code = IOUtils.toString(in, Charset.defaultCharset());
ObjectNode script = Json.mapper().createObjectNode();
script.put(ScriptsDao.NAME,name);
script.put(ScriptsDao.CODE,code);
script.put(ScriptsDao.ACTIVE,true);
script.put(ScriptsDao.LANG, ScriptLanguage.JS.name);
script.put(ScriptsDao.LIB,false);
return script;
} catch (IOException e){
Assert.fail(ExceptionUtils.getFullStackTrace(e));
throw new RuntimeException(e); // really not thrown in the tests
}
}
}