Forum Discussion

Yoav_Seroussi's avatar
Yoav_Seroussi
Occasional Contributor
14 years ago

external groovy script fails

Hi,
I am running an external groovy script from a REST test step.
This script returns a String which is used as a request parameter, like this:
${=com.muzicall.Rbt4AllApiSignatureGenerator.sign("${#Project#ochPrivateKey}", request, context, log)}

As you can see, the script's input is by means of three parameters - request, context, log.
When I run this test step (The REST request) I get the following exception in the SOAPUI log:

Thu Jul 08 14:30:50 IDT 2010:ERROR:Error evaluating script
groovy.lang.MissingPropertyException: No such property: request for class: Script1
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:241)
at Script1.run(Script1.groovy:1)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93)
at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:51)
at com.eviware.soapui.model.propertyexpansion.resolvers.EvalPropertyResolver.doEval(EvalPropertyResolver.java:145)
at com.eviware.soapui.model.propertyexpansion.resolvers.EvalPropertyResolver.resolveProperty(EvalPropertyResolver.java:124)
at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expand(PropertyExpander.java:159)
at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expandProperties(PropertyExpander.java:92)
at com.eviware.soapui.impl.wsdl.submit.filters.HttpRequestFilter.filterHttpRequest(HttpRequestFilter.java:87)
at com.eviware.soapui.impl.wsdl.submit.filters.RestRequestFilter.filterRestRequest(RestRequestFilter.java:39)
at com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.filterAbstractHttpRequest(AbstractRequestFilter.java:39)
at com.eviware.soapui.impl.wsdl.submit.filters.AbstractRequestFilter.filterRequest(AbstractRequestFilter.java:31)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:132)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:122)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.submitRequest(WsdlSubmit.java:75)
at com.eviware.soapui.impl.rest.RestRequest.submit(RestRequest.java:208)
at com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.run(RestTestRequestStep.java:778)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:206)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:137)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:39)
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:139)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Here is the script Class and Method definitions:

class Rbt4AllApiSignatureGenerator {

public static String sign(String key, RestRequestInterface request, PropertyExpansionContext context, Logger log) {

3 Replies

  • Yoav_Seroussi's avatar
    Yoav_Seroussi
    Occasional Contributor
    Hi,
    I downloaded and installed the latest night build, now it works.

    Thanks,

    Daniel
    • AFogarty's avatar
      AFogarty
      Regular Visitor

      Hi,

      with the latest build of ReadyAPI I appear to have a similiar issue now. This code worked on the last build but fails with 2.5.0.

       

      Basically in the request paramaters we set:

      signature = ${=com.muzicall.Rbt4AllApiSignatureGenerator.sign("${#Project#private_key}", request, context, log)}

       

      normally this calls the Rbt4AllApiSignatureGenerator script and returns our generated signature. Unfortunately since the last upgrade we see the following error message:

       

      signature=No signature of method: static com.muzicall.Rbt4AllApiSignatureGenerator.sign() is applicable for argument types: (java.lang.String, com.eviware.soapui.impl.wsdl.teststeps.RestTestRequest, com.eviware.soapui.model.propertyexpansion.DefaultPropertyExpansionContext, org.apache.logging.log4j.core.Logger) values: [<redacted private key>, ...] Possible solutions: sign(java.lang.String, com.eviware.soapui.impl.rest.RestRequestInterface, com.eviware.soapui.model.propertyexpansion.PropertyExpansionContext, org.apache.log4j.Logger), find(), wait(), any(), dump(), grep()

       

      Any idea what causes this changed behaviour?

       

      Thanks for your support!

       

      -Aidan