As stated here: there is no simple way to parse out json/xml responses when you´re testing a rest web service with the Grails functional testing plugin.
And it isn't really clear (to me at least) how you can post json data in the request.
Here is an example how I managed to do it. To parse the response I used dozer:
import grails.converters.JSON
@Grab(group='net.sf.dozer', module='dozer', version='5.0')
import org.dozer.DozerBeanMapper
class MyLittlePogo{
def name
def status
}
class TempFunctionalTests extends functionaltestplugin.FunctionalTestCase {
def dozerBeanMapper = new DozerBeanMapper()
public void testPostContactSettings() throws Exception {
post("/api/rest/currentuser/contactsettings") {
headers.put("Content-Type", "application/json;charset=UTF-8")
body {
"""${new JSON(
new MyLittlePogo(
name: "aname",
status: "INSTALLED"))}"""
}
}
// Convert the response to an instance of MyLittlePogo
def responseText = new String(response.responseData_.body_)
def jsonObj = JSON.parse(responseText)
MyLittlePogo myLittlePogo = dozerBeanMapper.map( jsonObj, MyLittlePogo )
assertStatus 200
assertNotNull myLittlePogo
}
}
torsdag 27 januari 2011
fredag 7 januari 2011
Grails and nonProxyHosts
When you´re working with Grails behind a proxy you might not be able to download dependencies.
This can be solved if you run add-proxy followed by set-proxy. In my application I have some soap clients, which fails when run through a proxy.
I need my soap call to go to the server directly, not going through the proxy.
This can be acheived by editing BuildConfig.groovy:
System.properties.put("http.nonProxyHosts", "company.host1.se|company.host2.se")
This can be solved if you run add-proxy followed by set-proxy. In my application I have some soap clients, which fails when run through a proxy.
I need my soap call to go to the server directly, not going through the proxy.
This can be acheived by editing BuildConfig.groovy:
System.properties.put("http.nonProxyHosts", "company.host1.se|company.host2.se")
Prenumerera på:
Inlägg (Atom)