2011-08-17 17 views
6

Quiero probar mi servicio web seguro a lo siguiente:prueba REST JSON servicio web Grails

  • UrlMapping correcta, por lo que son los siguientes servicios disponibles o no?
  • GET Prueba/POST/PUT/DELETE y su retroalimentación prestados, así como los errores de los mensajes de error
  • prueba cuando inicia sesión y no se ha identificado

Puede alguien darme algunos consejos de cómo hacer esto? No tengo ni idea de cómo acceder al servicio de seguridad de Grails y también ejecutar pruebas contra mis controladores cuando inicié sesión y cuando no. ¿También necesito algún servidor simulado o algo para probar contra mis controladores o?

Lo siento, soy muy nuevo en este tema, pero quiero ir en la dirección correcta antes de perder el control de mis servicios web.

¡Gracias por tu ayuda!

Respuesta

7

Utilizamos el complemento REST Client junto con el complemento functional testing para probar todos nuestros servicios web.

Por ejemplo ...

void testCreateTag() { 
    def name = 'Test Name' 
    def jsonText = """ 
     { 
      "class":"Tag", 
      "name":"${name}" 
     } 
     """ 

    post('/api/tag') { 
     headers['x-user-external-id'] = securityUser.externalId 
     headers['x-user-api-key'] = securityUser.apiKey 
     headers['Content-type'] = 'application/json' 
     body { 
     jsonText 
     } 
    } 

    def model = this.response.contentAsString 
    def map = JSON.parse(model) 

    assertNotNull(map.attributes.id) 

    Tag.withNewSession { 
     def tag = Tag.get(map.attributes.id) 

     assertNotNull(tag) 
     assertEquals(name, tag.name) 
    } 
} 
0

que tienen un código similar que utiliza el construido en (maravilloso 1.8) JsonSlurper que creo que podría ser más fiable y sólo necesita el plugin de pruebas funcionales, pero no el plug-in de cliente REST .

String baseUrlString = 'http://localhost:8080/**YOURAPP**' 

    baseURL = baseUrlString 

    post('/j_spring_security_check?') 

    assertStatus 200 
    assertContentDoesNotContain('Access Denied') 

    get("/*your test URL*/") 

    def jsonObj = new JsonSlurper().parseText(this.response.contentAsString) 
    assertEquals(jsonObj.your.object.model, **yourContent**)