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