Hi Paul, and all:
Since the grails webtest plugin 0.3 seems in my installation to use
an
older version of htmlunit (1.11), which did not support PUT and
DELETE I
was going for a complete update round to the latest and greatest
webtest
version from subversion. After checking out the svn head, I was
trying
to incoporate those two additional HTTP methods inside InvokePage
source, like:
protected Page findTarget() throws IOException, SAXException {
if ("POST".equals(getMethod())) {
return findTargetByPost();
} else if ("PUT".equals(getMethod())) {
return findTargetByPut();
} else if ("DELETE".equals(getMethod())) {
return findTargetByDelete();
}
// ... (rest unchanged)
}
And added two those two new methods:
private Page findTargetByPut() throws IOException, SAXException {
String url = getContext().getConfig().getUrlForPage(getUrl());
WebRequestSettings settings = new WebRequestSettings(new
URL(url), SubmitMethod.PUT);
final String content;
if (getContent() != null) {
content = getContent();
} else {
content = FileUtil.readFileToString(getContentFile(),
this);
}
settings.setRequestBody(content);
return getResponse(settings);
}
private Page findTargetByDelete() throws IOException,
SAXException {
String url = getContext().getConfig().getUrlForPage(getUrl());
WebRequestSettings settings = new WebRequestSettings(new
URL(url), SubmitMethod.DELETE);
return getResponse(settings);
}
After the build was finished, I copied everything from
webtest/build/runtime/lib into
{grails-app}/plugins/webtest-0.3/test/webtest/lib, in the hope that
it
could work instantly :-) Unfortunately it did not completely, at
least
the method='DELETE' on invoke, is now broken:
<error
exception="com.canoo.webtest.engine.StepExecutionException"
message="Unexpected exception caught:
java.lang.IllegalStateException">
<antStack>
<call filename="" line="0"/>
</antStack>
<stacktrace><![CDATA[: Unexpected exception caught:
java.lang.IllegalStateException
at
com.canoo.webtest.steps.StepUtil.handleException(StepUtil.java:113)
at com.canoo.webtest.steps.Step.handleException(Step.java:378)
at com.canoo.webtest.steps.Step.execute(Step.java:109)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org
.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:
105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at
com
.canoo
.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.java:43)
at
com
.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:
31)
at com.canoo.webtest.steps.Step.execute(Step.java:101)
Did I miss something on putting the webtest plugin into a proper
condition for the update?
Thanks for your help,
Niko
Am 16.03.2008 um 10:24 schrieb Paul King:
HtmlUnit supports this capability. See here:
http://markmail.org/message/dlrgsklatlnromog
So, it should be possible to hook this into WebTest
with a little Groovy code but I haven't had time to play
with this myself to show you what the code would look like.
Paul.
Niko Schmuck wrote:
Since webtest is such an absolute fantastic tool for testing
(human-readable) web pages, I thought I also want to use it for
testing the REST services of my grails web app (although I guess it
was never intended to address this). Unfortunately it seems that
the
invoke step, doesn't like to use PUT and DELETE as HTTP methods?
Why
is there the restriction to GET and POST when invoke is executed,
and
are there any chances to enable the other HTTP methods in the
future?
The current work around for me would be to mix in HTTP calls (with
Apache Commons HTTP Client) in my WebTest for making the tests more
complete. What I miss is, how to assign the webtest property
value to
a groovy variable. Is this possible and how?
Sorry, if this has been discussed already, but I did not find any
related discussions ...
Thanks,
Niko
_______________________________________________
WebTest mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/webtest