How to use eval method of com.intuit.karate.core.ScenarioBridge class

Best Karate code snippet using com.intuit.karate.core.ScenarioBridge.eval

Source:ScenarioBridge.java Github

copy

Full Screen

...286 resourceType = ResourceType.fromContentType(contentType);287 }288 getEngine().runtime.embed(JsValue.toBytes(o), resourceType);289 }290 public Object eval(String exp) {291 Variable result = getEngine().evalJs(exp);292 return JsValue.fromJava(result.getValue());293 }294 public String exec(Value value) {295 if (value.isString()) {296 return execInternal(Collections.singletonMap("line", value.asString()));297 } else if (value.hasArrayElements()) {298 List args = new JsValue(value).getAsList();299 return execInternal(Collections.singletonMap("args", args));300 } else {301 return execInternal(new JsValue(value).getAsMap());302 }303 }304 private String execInternal(Map<String, Object> options) {305 Command command = getEngine().fork(false, options);306 command.waitSync();307 return command.getAppender().collect();308 }309 public String extract(String text, String regex, int group) {310 Pattern pattern = Pattern.compile(regex);311 Matcher matcher = pattern.matcher(text);312 if (!matcher.find()) {313 getEngine().logger.warn("failed to find pattern: {}", regex);314 return null;315 }316 return matcher.group(group);317 }318 public List<String> extractAll(String text, String regex, int group) {319 Pattern pattern = Pattern.compile(regex);320 Matcher matcher = pattern.matcher(text);321 List<String> list = new ArrayList();322 while (matcher.find()) {323 list.add(matcher.group(group));324 }325 return list;326 }327 public void fail(String reason) {328 getEngine().setFailedReason(new KarateException(reason));329 }330 public Object filter(Value o, Value f) {331 if (!o.hasArrayElements()) {332 return JsList.EMPTY;333 }334 assertIfJsFunction(f);335 long count = o.getArraySize();336 List list = new ArrayList();337 for (int i = 0; i < count; i++) {338 Value v = o.getArrayElement(i);339 Value res = JsEngine.execute(f, v, i);340 if (res.isBoolean() && res.asBoolean()) {341 list.add(new JsValue(v).getValue());342 }343 }344 return new JsList(list);345 }346 public Object filterKeys(Value o, Value... args) {347 if (!o.hasMembers() || args.length == 0) {348 return JsMap.EMPTY;349 }350 List<String> keys = new ArrayList();351 if (args.length == 1) {352 if (args[0].isString()) {353 keys.add(args[0].asString());354 } else if (args[0].hasArrayElements()) {355 long count = args[0].getArraySize();356 for (int i = 0; i < count; i++) {357 keys.add(args[0].getArrayElement(i).toString());358 }359 } else if (args[0].hasMembers()) {360 for (String s : args[0].getMemberKeys()) {361 keys.add(s);362 }363 }364 } else {365 for (Value v : args) {366 keys.add(v.toString());367 }368 }369 Map map = new LinkedHashMap(keys.size());370 for (String key : keys) {371 if (key == null) {372 continue;373 }374 Value v = o.getMember(key);375 if (v != null) {376 map.put(key, v.as(Object.class));377 }378 }379 return new JsMap(map);380 }381 public void forEach(Value o, Value f) {382 assertIfJsFunction(f);383 if (o.hasArrayElements()) {384 long count = o.getArraySize();385 for (int i = 0; i < count; i++) {386 Value v = o.getArrayElement(i);387 f.executeVoid(v, i);388 }389 } else if (o.hasMembers()) { //map390 int i = 0;391 for (String k : o.getMemberKeys()) {392 Value v = o.getMember(k);393 f.executeVoid(k, v, i++);394 }395 } else {396 throw new RuntimeException("not an array or object: " + o);397 }398 }399 public Command fork(Value value) {400 if (value.isString()) {401 return getEngine().fork(true, value.asString());402 } else if (value.hasArrayElements()) {403 List args = new JsValue(value).getAsList();404 return getEngine().fork(true, args);405 } else {406 return getEngine().fork(true, new JsValue(value).getAsMap());407 }408 }409 // TODO breaking returns actual object not wrapper410 // and fromObject() has been removed411 // use new typeOf() method to find type412 public Object fromString(String exp) {413 ScenarioEngine engine = getEngine();414 try {415 Variable result = engine.evalKarateExpression(exp);416 return JsValue.fromJava(result.getValue());417 } catch (Exception e) {418 engine.setFailedReason(null); // special case419 engine.logger.warn("auto evaluation failed: {}", e.getMessage());420 return exp;421 }422 }423 public Object get(String exp) {424 ScenarioEngine engine = getEngine();425 Variable v;426 try {427 v = engine.evalKarateExpression(exp); // even json path expressions will work428 } catch (Exception e) {429 engine.logger.trace("karate.get failed for expression: '{}': {}", exp, e.getMessage());430 engine.setFailedReason(null); // special case !431 return null;432 }433 if (v != null) {434 return JsValue.fromJava(v.getValue());435 } else {436 return null;437 }438 }439 public Object get(String exp, Object defaultValue) {440 Object result = get(exp);441 return result == null ? defaultValue : result;442 }443 // getters =================================================================444 // TODO migrate these to functions not properties445 //446 public ScenarioEngine getEngine() {447 ScenarioEngine engine = ScenarioEngine.get();448 return engine == null ? ENGINE : engine;449 }450 public String getEnv() {451 return getEngine().runtime.featureRuntime.suite.env;452 }453 public Object getFeature() {454 return new JsMap(getEngine().runtime.featureRuntime.result.toInfoJson());455 }456 public Object getInfo() { // TODO deprecate457 return new JsMap(getEngine().runtime.getScenarioInfo());458 }459 private LogFacade logFacade;460 public Object getLogger() {461 if (logFacade == null) {462 logFacade = new LogFacade();463 }464 return logFacade;465 }466 public Object getOs() {467 String name = FileUtils.getOsName();468 String type = FileUtils.getOsType(name).toString().toLowerCase();469 Map<String, Object> map = new HashMap(2);470 map.put("name", name);471 map.put("type", type);472 return new JsMap(map);473 }474 // TODO breaking uri has been renamed to url475 public Object getPrevRequest() {476 HttpRequest hr = getEngine().getRequest();477 if (hr == null) {478 return null;479 }480 Map<String, Object> map = new HashMap();481 map.put("method", hr.getMethod());482 map.put("url", hr.getUrl());483 map.put("headers", hr.getHeaders());484 map.put("body", hr.getBody());485 return JsValue.fromJava(map);486 }487 public Object getProperties() {488 return new JsMap(getEngine().runtime.featureRuntime.suite.systemProperties);489 }490 public Object getScenario() {491 return new JsMap(getEngine().runtime.result.toKarateJson());492 }493 public Object getTags() {494 return JsValue.fromJava(getEngine().runtime.tags.getTags());495 }496 public Object getTagValues() {497 return JsValue.fromJava(getEngine().runtime.tags.getTagValues());498 }499 //==========================================================================500 //501 public HttpRequestBuilder http(String url) {502 ScenarioEngine engine = getEngine();503 HttpClient client = engine.runtime.featureRuntime.suite.clientFactory.create(engine);504 return new HttpRequestBuilder(client).url(url);505 }506 public Object jsonPath(Object o, String exp) {507 Json json = Json.of(o);508 return JsValue.fromJava(json.get(exp));509 }510 public Object keysOf(Value o) {511 return new JsList(o.getMemberKeys());512 }513 public void log(Value... values) {514 ScenarioEngine engine = getEngine();515 if (engine.getConfig().isPrintEnabled()) {516 engine.logger.info("{}", new LogWrapper(values));517 }518 }519 public Object lowerCase(Object o) {520 Variable var = new Variable(o);521 return JsValue.fromJava(var.toLowerCase().getValue());522 }523 public Object map(Value o, Value f) {524 if (!o.hasArrayElements()) {525 return JsList.EMPTY;526 }527 assertIfJsFunction(f);528 long count = o.getArraySize();529 List list = new ArrayList();530 for (int i = 0; i < count; i++) {531 Value v = o.getArrayElement(i);532 Value res = JsEngine.execute(f, v, i);533 list.add(new JsValue(res).getValue());534 }535 return new JsList(list);536 }537 public Object mapWithKey(Value v, String key) {538 if (!v.hasArrayElements()) {539 return JsList.EMPTY;540 }541 long count = v.getArraySize();542 List list = new ArrayList();543 for (int i = 0; i < count; i++) {544 Map map = new LinkedHashMap();545 Value res = v.getArrayElement(i);546 map.put(key, res.as(Object.class));547 list.add(map);548 }549 return new JsList(list);550 }551 public Object match(Object actual, Object expected) {552 Match.Result mr = getEngine().match(Match.Type.EQUALS, actual, expected);553 return JsValue.fromJava(mr.toMap());554 }555 public Object match(String exp) {556 MatchStep ms = new MatchStep(exp);557 Match.Result mr = getEngine().match(ms.type, ms.name, ms.path, ms.expected);558 return JsValue.fromJava(mr.toMap());559 }560 public Object merge(Value... vals) {561 if (vals.length == 0) {562 return null;563 }564 if (vals.length == 1) {565 return vals[0];566 }567 Map map = new HashMap(vals[0].as(Map.class));568 for (int i = 1; i < vals.length; i++) {569 map.putAll(vals[i].as(Map.class));570 }571 return new JsMap(map);572 }573 public void pause(Value value) {574 ScenarioEngine engine = getEngine();575 if (!value.isNumber()) {576 engine.logger.warn("pause argument is not a number:", value);577 return;578 }579 if (engine.runtime.perfMode) {580 engine.runtime.featureRuntime.perfHook.pause(value.asInt());581 } else if (engine.getConfig().isPauseIfNotPerf()) {582 try {583 Thread.sleep(value.asInt());584 } catch (Exception e) {585 throw new RuntimeException(e);586 }587 }588 }589 public String pretty(Object o) {590 Variable v = new Variable(o);591 return v.getAsPrettyString();592 }593 public String prettyXml(Object o) {594 Variable v = new Variable(o);595 return v.getAsPrettyXmlString();596 }597 public void proceed() {598 proceed(null);599 }600 public void proceed(String requestUrlBase) {601 getEngine().mockProceed(requestUrlBase);602 }603 public Object range(int start, int end) {604 return range(start, end, 1);605 }606 public Object range(int start, int end, int interval) {607 if (interval <= 0) {608 throw new RuntimeException("interval must be a positive integer");609 }610 List<Integer> list = new ArrayList();611 if (start <= end) {612 for (int i = start; i <= end; i += interval) {613 list.add(i);614 }615 } else {616 for (int i = start; i >= end; i -= interval) {617 list.add(i);618 }619 }620 return JsValue.fromJava(list);621 }622 public Object read(String name) {623 Object result = getEngine().fileReader.readFile(name);624 return JsValue.fromJava(result);625 }626 public String readAsString(String fileName) {627 return getEngine().fileReader.readFileAsString(fileName);628 }629 public void remove(String name, String path) {630 getEngine().remove(name, path);631 }632 public Object repeat(int n, Value f) {633 assertIfJsFunction(f);634 List list = new ArrayList(n);635 for (int i = 0; i < n; i++) {636 Value v = JsEngine.execute(f, i);637 list.add(new JsValue(v).getValue());638 }639 return new JsList(list);640 }641 // set multiple variables in one shot642 public void set(Map<String, Object> map) {643 getEngine().setVariables(map);644 }645 public void set(String name, Value value) {646 getEngine().setVariable(name, new Variable(value));647 }648 // this makes sense mainly for xpath manipulation from within js649 public void set(String name, String path, Object value) {650 getEngine().set(name, path, new Variable(value));651 }652 public void setXml(String name, String xml) {653 getEngine().setVariable(name, XmlUtils.toXmlDoc(xml));654 }655 // this makes sense mainly for xpath manipulation from within js656 public void setXml(String name, String path, String xml) {657 getEngine().set(name, path, new Variable(XmlUtils.toXmlDoc(xml)));658 }659 @Override660 public void signal(Object o) {661 Value v = Value.asValue(o);662 getEngine().signal(JsValue.toJava(v));663 }664 public Object sizeOf(Value v) {665 if (v.hasArrayElements()) {666 return v.getArraySize();667 } else if (v.hasMembers()) {668 return v.getMemberKeys().size();669 } else {670 return -1;671 }672 }673 public Object sort(Value o) {674 return sort(o, getEngine().JS.evalForValue("x => x"));675 }676 public Object sort(Value o, Value f) {677 if (!o.hasArrayElements()) {678 return JsList.EMPTY;679 }680 assertIfJsFunction(f);681 long count = o.getArraySize();682 Map<Object, Object> map = new TreeMap();683 for (int i = 0; i < count; i++) {684 Object item = JsValue.toJava(o.getArrayElement(i));685 Value key = JsEngine.execute(f, item, i);686 if (key.isNumber()) {687 map.put(key.as(Number.class), item);688 } else {689 map.put(key.asString(), item);690 }691 }692 return JsValue.fromJava(new ArrayList(map.values()));693 }694 public MockServer start(Value value) {695 if (value.isString()) {696 return startInternal(Collections.singletonMap("mock", value.asString()));697 } else {698 return startInternal(new JsValue(value).getAsMap());699 }700 }701 private MockServer startInternal(Map<String, Object> config) {702 String mock = (String) config.get("mock");703 if (mock == null) {704 throw new RuntimeException("'mock' is missing: " + config);705 }706 File feature = toJavaFile(mock);707 MockServer.Builder builder = MockServer.feature(feature);708 String certFile = (String) config.get("cert");709 if (certFile != null) {710 builder.certFile(toJavaFile(certFile));711 }712 String keyFile = (String) config.get("key");713 if (keyFile != null) {714 builder.keyFile(toJavaFile(keyFile));715 }716 Boolean ssl = (Boolean) config.get("ssl");717 if (ssl == null) {718 ssl = false;719 }720 Integer port = (Integer) config.get("port");721 if (port == null) {722 port = 0;723 }724 Map<String, Object> arg = (Map) config.get("arg");725 builder.args(arg);726 if (ssl) {727 builder.https(port);728 } else {729 builder.http(port);730 }731 return builder.build();732 }733 public void stop(int port) {734 Command.waitForSocket(port);735 }736 public String toAbsolutePath(String relativePath) {737 return getEngine().fileReader.toAbsolutePath(relativePath);738 }739 public Object toBean(Object o, String className) {740 Json json = Json.of(o);741 Object bean = JsonUtils.fromJson(json.toString(), className);742 return JsValue.fromJava(bean);743 }744 public String toCsv(Object o) {745 Variable v = new Variable(o);746 if (!v.isList()) {747 throw new RuntimeException("not a json array: " + v);748 }749 List<Map<String, Object>> list = v.getValue();750 return JsonUtils.toCsv(list);751 }752 public Object toJava(Value value) {753 if (value.canExecute()) {754 JsEngine copy = getEngine().JS.copy();755 return new JsLambda(copy.attach(value));756 } else {757 return new JsValue(value).getValue();758 }759 }760 private File toJavaFile(String path) {761 return getEngine().fileReader.toResource(path).getFile();762 }763 public Object toJson(Value value) {764 return toJson(value, false);765 }766 public Object toJson(Value value, boolean removeNulls) {767 JsValue jv = new JsValue(value);768 String json = JsonUtils.toJson(jv.getValue());769 Object result = Json.of(json).value();770 if (removeNulls) {771 JsonUtils.removeKeysWithNullValues(result);772 }773 return JsValue.fromJava(result);774 }775 // TODO deprecate776 public Object toList(Value value) {777 return new JsValue(value).getValue();778 }779 // TODO deprecate780 public Object toMap(Value value) {781 return new JsValue(value).getValue();782 }783 public String toString(Object o) {784 Variable v = new Variable(o);785 return v.getAsString();786 }787 public String trim(String s) {788 return s == null ? null : s.trim();789 }790 public String typeOf(Value value) {791 Variable v = new Variable(value);792 return v.getTypeString();793 }794 public String urlEncode(String s) {795 try {796 return URLEncoder.encode(s, "UTF-8");797 } catch (Exception e) {798 getEngine().logger.warn("url encode failed: {}", e.getMessage());799 return s;800 }801 }802 public String urlDecode(String s) {803 try {804 return URLDecoder.decode(s, "UTF-8");805 } catch (Exception e) {806 getEngine().logger.warn("url encode failed: {}", e.getMessage());807 return s;808 }809 }810 public Object valuesOf(Value v) {811 if (v.hasArrayElements()) {812 return v;813 } else if (v.hasMembers()) {814 List list = new ArrayList();815 for (String k : v.getMemberKeys()) {816 Value res = v.getMember(k);817 list.add(res.as(Object.class));818 }819 return new JsList(list);820 } else {821 return null;822 }823 }824 public boolean waitForHttp(String url) {825 return Command.waitForHttp(url);826 }827 public boolean waitForPort(String host, int port) {828 return new Command().waitForPort(host, port);829 }830 public WebSocketClient webSocket(String url) {831 return webSocket(url, null, null);832 }833 public WebSocketClient webSocket(String url, Value value) {834 return webSocket(url, value, null);835 }836 public WebSocketClient webSocket(String url, Value listener, Value value) {837 Function<String, Boolean> handler;838 ScenarioEngine engine = getEngine();839 if (listener == null || !listener.canExecute()) {840 handler = m -> true;841 } else {842 JsEngine copy = engine.JS.copy();843 handler = new JsLambda(copy.attach(listener));844 }845 WebSocketOptions options = new WebSocketOptions(url, value == null ? null : new JsValue(value).getValue());846 options.setTextHandler(handler);847 return engine.webSocket(options);848 }849 public WebSocketClient webSocketBinary(String url) {850 return webSocketBinary(url, null, null);851 }852 public WebSocketClient webSocketBinary(String url, Value value) {853 return webSocketBinary(url, value, null);854 }855 public WebSocketClient webSocketBinary(String url, Value listener, Value value) {856 Function<byte[], Boolean> handler;857 ScenarioEngine engine = getEngine();858 if (listener == null || !listener.canExecute()) {859 handler = m -> true;860 } else {861 JsEngine copy = engine.JS.copy();862 handler = new JsLambda(copy.attach(listener));863 }864 WebSocketOptions options = new WebSocketOptions(url, value == null ? null : new JsValue(value).getValue());865 options.setBinaryHandler(handler);866 return engine.webSocket(options);867 }868 public File write(Object o, String path) {869 ScenarioEngine engine = getEngine();870 path = engine.runtime.featureRuntime.suite.buildDir + File.separator + path;871 File file = new File(path);872 FileUtils.writeToFile(file, JsValue.toBytes(o));873 engine.logger.debug("write to file: {}", file);874 return file;875 }876 public Object xmlPath(Object o, String path) {877 Variable var = new Variable(o);878 Variable res = ScenarioEngine.evalXmlPath(var, path);879 return JsValue.fromJava(res.getValue());880 }881 // helpers =================================================================882 //883 private static void assertIfJsFunction(Value f) {884 if (!f.canExecute()) {885 throw new RuntimeException("not a js function: " + f);886 }887 }888 // make sure log() toString() is lazy889 static class LogWrapper {890 final Value[] values;891 LogWrapper(Value... values) {892 // sometimes a null array gets passed in, graal weirdness...

Full Screen

Full Screen

Source:ServerContext.java Github

copy

Full Screen

...59 private static final Logger logger = LoggerFactory.getLogger(ServerContext.class);60 private static final String READ = "read";61 private static final String RESOLVER = "resolver";62 private static final String READ_AS_STRING = "readAsString";63 private static final String EVAL = "eval";64 private static final String EVAL_WITH = "evalWith";65 private static final String GET = "get";66 private static final String LOG = "log";67 private static final String UUID = "uuid";68 private static final String REMOVE = "remove";69 private static final String REDIRECT = "redirect";70 private static final String SWITCH = "switch";71 private static final String SWITCHED = "switched";72 private static final String AJAX = "ajax";73 private static final String HTTP = "http";74 private static final String NEXT_ID = "nextId";75 private static final String SESSION_ID = "sessionId";76 private static final String INIT = "init";77 private static final String CLOSE = "close";78 private static final String CLOSED = "closed";79 private static final String RENDER = "render";80 private static final String BODY_APPEND = "bodyAppend";81 private static final String COPY = "copy";82 private static final String DELAY = "delay";83 private static final String TO_STRING = "toString";84 private static final String TO_LIST = "toList";85 private static final String TO_JSON = "toJson";86 private static final String TO_JSON_PRETTY = "toJsonPretty";87 private static final String FROM_JSON = "fromJson";88 private static final String TEMPLATE = "template";89 private static final String TYPE_OF = "typeOf";90 private static final String IS_PRIMITIVE = "isPrimitive";91 private static final String[] KEYS = new String[]{92 READ, RESOLVER, READ_AS_STRING, EVAL, EVAL_WITH, GET, LOG, UUID, REMOVE, REDIRECT, SWITCH, SWITCHED, AJAX, HTTP, NEXT_ID, SESSION_ID,93 INIT, CLOSE, CLOSED, RENDER, BODY_APPEND, COPY, DELAY, TO_STRING, TO_LIST, TO_JSON, TO_JSON_PRETTY, FROM_JSON, TEMPLATE, TYPE_OF, IS_PRIMITIVE};94 private static final Set<String> KEY_SET = new HashSet(Arrays.asList(KEYS));95 private static final JsArray KEY_ARRAY = new JsArray(KEYS);96 private final ServerConfig config;97 private final Request request;98 private boolean stateless;99 private boolean api;100 private boolean httpGetAllowed;101 private boolean lockNeeded;102 private boolean newSession;103 private Session session; // can be pre-resolved, else will be set by RequestCycle.init()104 private boolean switched;105 private boolean closed;106 private Supplier<Response> customHandler;107 private int nextId;108 private final Map<String, Object> variables;109 private String redirectPath;110 private List<String> bodyAppends;111 private LogAppender logAppender;112 private RequestCycle mockRequestCycle;113 public ServerContext(ServerConfig config, Request request) {114 this(config, request, null);115 } 116 public ServerContext(ServerConfig config, Request request, Map<String, Object> variables) {117 this.config = config;118 this.request = request;119 this.variables = variables;120 HTTP_FUNCTION = args -> {121 HttpClient client = config.getHttpClientFactory().apply(request);122 HttpRequestBuilder http = new HttpRequestBuilder(client);123 if (args.length > 0) {124 http.url((String) args[0]);125 }126 return http;127 };128 RENDER_FUNCTION = o -> {129 if (o instanceof String) {130 return TemplateUtils.renderServerPath((String) o, getEngine(), config.getResourceResolver(), config.isDevMode());131 }132 Map<String, Object> map;133 if (o instanceof Map) {134 map = (Map) o;135 } else {136 logger.warn("invalid argument to render: {}", o);137 return null;138 }139 Map<String, Object> vars = (Map) map.get("vars");140 String path = (String) map.get("path");141 String html = (String) map.get("html");142 Boolean fork = (Boolean) map.get("fork");143 Boolean append = (Boolean) map.get("append");144 if (path == null && html == null) {145 logger.warn("invalid argument to render, 'path' or 'html' needed: {}", map);146 return null;147 }148 JsEngine je;149 if (fork != null && fork) {150 je = JsEngine.local();151 } else {152 je = getEngine().copy();153 }154 if (vars != null) {155 je.putAll(vars);156 }157 String body;158 if (path != null) {159 body = TemplateUtils.renderServerPath(path, je, config.getResourceResolver(), config.isDevMode());160 } else {161 body = TemplateUtils.renderHtmlString(html, je, config.getResourceResolver());162 }163 if (append != null && append) {164 bodyAppend(body);165 }166 return body;167 };168 }169 public boolean setApiIfPathStartsWith(String prefix) {170 String path = request.getPath();171 if (path.startsWith(prefix)) {172 api = true;173 int length = prefix.length();174 int pos = path.indexOf('/', length);175 if (pos != -1) {176 request.setResourcePath(path.substring(0, pos) + ".js");177 } else {178 request.setResourcePath(path + ".js");179 }180 request.setPath(path.substring(length - 1));181 return true;182 }183 return false;184 }185 public String getSessionCookieValue() {186 List<String> values = request.getHeaderValues(HttpConstants.HDR_COOKIE);187 if (values == null) {188 return null;189 }190 for (String value : values) {191 Set<Cookie> cookies = ServerCookieDecoder.STRICT.decode(value);192 for (Cookie c : cookies) {193 if (config.getSessionCookieName().equals(c.name())) {194 return c.value();195 }196 }197 }198 return null;199 }200 public String readAsString(String resource) {201 InputStream is = config.getResourceResolver().resolve(resource).getStream();202 return FileUtils.toString(is);203 }204 public Object read(String resource) {205 String raw = readAsString(resource);206 ResourceType resourceType = ResourceType.fromFileExtension(resource);207 if (resourceType == ResourceType.JS) {208 return eval(raw);209 } else {210 return JsValue.fromString(raw, false, resourceType);211 }212 }213 214 private JsEngine getEngine() {215 KarateEngineContext kec = KarateEngineContext.get();216 return kec == null ? RequestCycle.get().getEngine() : kec.getJsEngine();217 }218 public Object eval(String source) {219 return getEngine().evalForValue(source);220 }221 public Object evalWith(Object o, String source) {222 Value value = Value.asValue(o);223 return getEngine().evalWith(value, source, true);224 }225 public String toJson(Object o) {226 Value value = Value.asValue(o);227 return new JsValue(value).toJsonOrXmlString(false);228 }229 public String toJsonPretty(Object o) {230 Value value = Value.asValue(o);231 return new JsValue(value).toJsonOrXmlString(true);232 }233 public ServerConfig getConfig() {234 return config;235 }236 public Request getRequest() {237 return request;238 }239 public Map<String, Object> getVariables() {240 return variables;241 }242 public boolean isNewSession() {243 return newSession;244 }245 public void init() {246 long now = Instant.now().getEpochSecond();247 long expires = now + config.getSessionExpirySeconds();248 session = config.getSessionStore().create(now, expires);249 newSession = true;250 }251 public Session getSession() {252 return session;253 }254 public void setSession(Session session) {255 this.session = session;256 }257 public boolean isLockNeeded() {258 return lockNeeded;259 }260 public void setLockNeeded(boolean lockNeeded) {261 this.lockNeeded = lockNeeded;262 }263 public boolean isStateless() {264 return stateless;265 }266 public void setStateless(boolean stateless) {267 this.stateless = stateless;268 }269 public boolean isAjax() {270 return request.isAjax();271 }272 public boolean isApi() {273 return api;274 }275 public void setApi(boolean api) {276 this.api = api;277 }278 public boolean isClosed() {279 return closed;280 }281 public boolean isHttpGetAllowed() {282 return httpGetAllowed;283 }284 public void setHttpGetAllowed(boolean httpGetAllowed) {285 this.httpGetAllowed = httpGetAllowed;286 }287 public Supplier<Response> getCustomHandler() {288 return customHandler;289 }290 public void setCustomHandler(Supplier<Response> customHandler) {291 this.customHandler = customHandler;292 }293 public void setMockRequestCycle(RequestCycle mockRequestCycle) {294 this.mockRequestCycle = mockRequestCycle;295 }296 public RequestCycle getMockRequestCycle() {297 return mockRequestCycle;298 }299 public boolean isSwitched() {300 return switched;301 }302 public String getRedirectPath() {303 return redirectPath;304 }305 public List<String> getBodyAppends() {306 return bodyAppends;307 }308 public void bodyAppend(String body) {309 if (bodyAppends == null) {310 bodyAppends = new ArrayList();311 }312 bodyAppends.add(body);313 }314 public LogAppender getLogAppender() {315 return logAppender;316 }317 public void setLogAppender(LogAppender logAppender) {318 this.logAppender = logAppender;319 }320 public void log(Object... args) {321 String log = new LogWrapper(args).toString();322 logger.info(log);323 if (logAppender != null) {324 logAppender.append(log);325 }326 }327 private final Methods.FunVar GET_FUNCTION = args -> {328 if (args.length == 0 || args[0] == null) {329 return null;330 }331 String name = args[0].toString();332 KarateEngineContext kec = KarateEngineContext.get();333 Object value;334 if (kec != null && kec.containsVariable(name)) {335 value = kec.getVariable(name);336 } else {337 JsEngine je = getEngine();338 if (je.bindings.hasMember(name)) {339 value = je.get(name).getValue();340 } else if (args.length > 1) {341 value = args[1];342 } else {343 value = null;344 }345 }346 return value;347 };348 private static final Supplier<String> UUID_FUNCTION = () -> java.util.UUID.randomUUID().toString();349 private static final Function<String, Object> FROM_JSON_FUNCTION = s -> JsValue.fromString(s, false, null);350 private final Methods.FunVar HTTP_FUNCTION; // set in constructor351 private final Function<Object, String> RENDER_FUNCTION; // set in constructor 352 private final Methods.FunVar LOG_FUNCTION = args -> {353 log(args);354 return null;355 };356 private final Function<Object, Object> COPY_FUNCTION = o -> {357 return JsValue.fromJava(JsonUtils.deepCopy(o));358 };359 private final Consumer<Number> DELAY_FUNCTION = v -> {360 try {361 Thread.sleep(v.longValue());362 } catch (Exception e) {363 logger.error("delay failed: {}", e.getMessage());364 }365 };366 private final Function<Object, Object> TO_STRING_FUNCTION = o -> {367 Variable v = new Variable(o);368 return v.getAsString();369 };370 private final Function<Object, Object> TO_LIST_FUNCTION = o -> {371 if (o instanceof Map) {372 Map map = (Map) o;373 List list = JsonUtils.toList(map);374 return JsValue.fromJava(list);375 } else {376 logger.warn("unable to cast to map: {} - {}", o.getClass(), o);377 return null;378 }379 };380 private final Methods.FunVar SWITCH_FUNCTION = args -> {381 if (switched) {382 logger.warn("context.switch() can be called only once during a request, ignoring: {}", args[0]);383 } else {384 switched = true; // flag for request cycle render385 KarateEngineContext.get().setRedirect(true); // flag for template engine386 RequestCycle rc = RequestCycle.get();387 if (args.length > 1) {388 Value value = Value.asValue(args[1]);389 if (value.hasMembers()) {390 JsValue jv = new JsValue(value);391 rc.setSwitchParams(jv.getAsMap());392 }393 }394 String template;395 if (args.length > 0) {396 template = args[0].toString();397 rc.setSwitchTemplate(template);398 } else {399 template = null;400 }401 throw new RedirectException(template);402 }403 return null;404 };405 private final Supplier<String> CLOSE_FUNCTION = () -> {406 closed = true;407 return null;408 };409 private final Supplier<Object> INIT_FUNCTION = () -> {410 init();411 getEngine().put(RequestCycle.SESSION, session.getData());412 logger.debug("init session: {}", session);413 return null;414 };415 private final Function<String, Object> REDIRECT_FUNCTION = (path) -> {416 redirectPath = path;417 logger.debug("redirect requested to: {}", redirectPath);418 return null;419 };420 private static final BiFunction<Object, Object, Object> REMOVE_FUNCTION = (o, k) -> {421 if (o instanceof Map && k != null) {422 Map in = (Map) o;423 Map out = new HashMap(in);424 Object removed = out.remove(k.toString());425 if (removed == null) {426 logger.warn("nothing removed, key not present: {}", k);427 return o;428 } else {429 return JsValue.fromJava(out);430 }431 } else if (o != null) {432 logger.warn("unable to cast to map: {} - {}", o.getClass(), o);433 }434 return o;435 };436 private final Supplier<String> NEXT_ID_FUNCTION = () -> ++nextId + "-" + System.currentTimeMillis();437 private final Function<String, Object> TYPE_OF_FUNCTION = o -> new Variable(o).getTypeString();438 private final Function<Object, Object> IS_PRIMITIVE_FUNCTION = o -> !new Variable(o).isMapOrList();439 @Override440 public Object getMember(String key) {441 switch (key) {442 case READ:443 return (Function<String, Object>) this::read;444 case READ_AS_STRING:445 return (Function<String, String>) this::readAsString;446 case EVAL:447 return (Function<String, Object>) this::eval;448 case EVAL_WITH:449 return (BiFunction<Object, String, Object>) this::evalWith;450 case GET:451 return GET_FUNCTION;452 case LOG:453 return LOG_FUNCTION;454 case UUID:455 return UUID_FUNCTION;456 case COPY:457 return COPY_FUNCTION;458 case DELAY:459 return DELAY_FUNCTION;460 case TO_STRING:461 return TO_STRING_FUNCTION;462 case TO_LIST:463 return TO_LIST_FUNCTION;...

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.ScenarioBridge;2import com.intuit.karate.core.ScenarioContext;3import com.intuit.karate.core.ScenarioRuntime;4import com.intuit.karate.core.ScenarioResult;5import com.intuit.karate.core.Scenario;6import com.intuit.karate.core.ScenarioEngine;7import com.intuit.karate.core.ScenarioEngineOptions;8import com.intuit.karate.core.FeatureRuntime;9import com.intuit.karate.core.FeatureResult;10import com.intuit.karate.core.Feature;11import com.intuit.karate.core.FeatureEngine;12import com.intuit.karate.core.FeatureEngineOptions;13import com.intuit.karate.core.FeatureBackground;14import com.intuit.karate.core.FeatureSection;15import com.intuit.karate.core.FeatureSectionType;16import com.intuit.karate.core.FeatureSectionItem;17import com.intuit.karate.core.FeatureSectionItemResult;18import com.intuit.karate.core.FeatureSectionItemRuntime;19import com.intuit.karate.core.FeatureSectionItemEngine;20import com.intuit.karate.core.FeatureSectionItemEngineOptions;21import com.intuit.karate.core.FeatureSectionItemEngineResult;22import com.intuit.karate.core.FeatureSectionItemEngineResultType;23import com.intuit.karate.core.FeatureSectionItemEngineResultType;24import com.intuit.karate.core.FeatureSectionItemEngineResult;25import com.intuit.karate.core.Fea

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.ScenarioBridge;2import com.intuit.karate.core.ScenarioContext;3import com.intuit.karate.core.ScenarioRuntime;4import com.intuit.karate.core.ScenarioEngine;5import com.intuit.karate.core.ScenarioEngineBuilder;6import com.intuit.karate.core.Scenario;7import com.intuit.karate.core.ScenarioResult;8import com.intuit.karate.core.ScenarioResult.ResultType;9import com.intuit.karate.core.ScenarioResult.ResultStatus;10import com.intuit.karate.core.ScenarioResult.ResultStep;11import com.intuit.karate.core.ScenarioResult.ResultCall;12import com.intuit.karate.core.ScenarioResult.ResultHook;13import com.intuit.karate.core.ScenarioResult.ResultHookType;14import com.intuit.karate.core.ScenarioResult.ResultHookPhase;15import com.intuit.karate.core.ScenarioResult.ResultHookResult;16import com.intuit.karate.core.ScenarioResult.ResultHookResultType;17import com.intuit.karate.core.ScenarioResult.ResultHookResultStatus;18import com.intuit.karate.core.ScenarioResult.ResultHookResultStep;19import com.intuit.karate.core.ScenarioResult.ResultHookResultCall;20import com.intuit.karate.core.ScenarioResult.ResultHookResultHook;21import com.intuit.karate.core.ScenarioResult.ResultHookResultHookType;22import com.intuit.karate.core.ScenarioResult.ResultHookResultHookPhase;23import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResult;24import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultType;25import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultStatus;26import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultStep;27import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultCall;28import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultHook;29import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultHookType;30import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultHookPhase;31import com.intuit.karate.core.ScenarioResult.ResultHookResultHookResultHookResult;32import com.intuit.karate.core.ScenarioResult.ResultHook

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.ScenarioBridge;2import com.intuit.karate.core.ScenarioContext;3public class 4 {4 public static void main(String[] args) {5 ScenarioContext context = new ScenarioContext();6 ScenarioBridge bridge = new ScenarioBridge(context);7 System.out.println(bridge.eval("1+1"));8 }9}

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.ScenarioBridge;2public class 4 {3 public static void main(String[] args) {4 ScenarioBridge bridge = new ScenarioBridge();5 bridge.eval("classpath:myScript.feature");6 }7}8import com.intuit.karate.core.ScenarioBridge;9public class 5 {10 public static void main(String[] args) {11 ScenarioBridge bridge = new ScenarioBridge();12 bridge.eval("classpath:myScript.feature");13 }14}15import com.intuit.karate.core.ScenarioBridge;16public class 6 {17 public static void main(String[] args) {18 ScenarioBridge bridge = new ScenarioBridge();19 bridge.eval("classpath:myScript.feature");20 }21}22import com.intuit.karate.core.ScenarioBridge;23public class 7 {24 public static void main(String[] args) {25 ScenarioBridge bridge = new ScenarioBridge();26 bridge.eval("classpath:myScript.feature");27 }28}29import com.intuit.karate.core.ScenarioBridge;30public class 8 {31 public static void main(String[] args) {32 ScenarioBridge bridge = new ScenarioBridge();33 bridge.eval("classpath:myScript.feature");34 }35}36import com.intuit.karate.core.ScenarioBridge;37public class 9 {38 public static void main(String[] args) {39 ScenarioBridge bridge = new ScenarioBridge();40 bridge.eval("classpath:myScript.feature");41 }42}

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.Scenario;2import com.intuit.karate.core.ScenarioBridge;3import com.intuit.karate.core.ScenarioRuntime;4import com.intuit.karate.core.ScenarioContext;5public class Test {6 public static void main(String[] args) {7 ScenarioRuntime runtime = new ScenarioRuntime();8 Scenario scenario = new Scenario("test", "test.feature", 1, null);9 ScenarioContext context = new ScenarioContext(runtime, scenario);10 ScenarioBridge bridge = new ScenarioBridge(context);11 Object result = bridge.eval("a = 1; a + 1");12 System.out.println(result);13 }14}15import com.intuit.karate.core.Scenario;16import com.intuit.karate.core.ScenarioBridge;17import com.intuit.karate.core.ScenarioRuntime;18import com.intuit.karate.core.ScenarioContext;19public class Test {20 public static void main(String[] args) {21 ScenarioRuntime runtime = new ScenarioRuntime();22 Scenario scenario = new Scenario("test", "test.feature", 1, null);23 ScenarioContext context = new ScenarioContext(runtime, scenario);24 ScenarioBridge bridge = new ScenarioBridge(context);25 Object result = bridge.eval("a = 1; a + 1");26 System.out.println(result);27 }28}29import com.intuit.karate.core.Scenario;30import com.intuit.karate.core.ScenarioBridge;31import com.intuit.karate.core.ScenarioRuntime;32import com.intuit.karate.core.ScenarioContext;33public class Test {34 public static void main(String[] args) {35 ScenarioRuntime runtime = new ScenarioRuntime();36 Scenario scenario = new Scenario("test", "test.feature", 1, null);37 ScenarioContext context = new ScenarioContext(runtime, scenario);38 ScenarioBridge bridge = new ScenarioBridge(context);39 Object result = bridge.eval("a = 1; a + 1");40 System.out.println(result);41 }42}

Full Screen

Full Screen

eval

Using AI Code Generation

copy

Full Screen

1import com.intuit.karate.core.ScenarioBridge;2public class 4 {3 public static void main(String[] args) {4 ScenarioBridge.eval("classpath:4.feature");5 }6}7import com.intuit.karate.core.ScenarioBridge;8public class 5 {9 public static void main(String[] args) {10 ScenarioBridge.eval("classpath:5.feature");11 }12}13import com.intuit.karate.core.ScenarioBridge;14public class 6 {15 public static void main(String[] args) {16 ScenarioBridge.eval("classpath:6.feature");17 }18}19import com.intuit.karate.core.ScenarioBridge;20public class 7 {21 public static void main(String[] args) {22 ScenarioBridge.eval("classpath:7.feature");23 }24}25import com.intuit.karate.core.ScenarioBridge;26public class 8 {27 public static void main(String[] args) {28 ScenarioBridge.eval("classpath:8.feature");29 }30}

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful