2011-08-17 8 views
6

Chcę przetestować zabezpieczone usługa na następujące kwestie:testowania relaksującego JSON Grails Webservice

  • UrlMapping poprawne, więc są następujące usługi dostępne czy nie?
  • test GET/POST/PUT/DELETE i ich renderowane feedback jak również błędy komunikaty o błędach
  • testowe po zalogowaniu się i nie zalogowany

Czy ktoś może mi dać kilka wskazówek, jak to zrobić? Nie mam pojęcia, w jaki sposób uzyskać dostęp do usługi bezpieczeństwa Grails oraz testy przeprowadzane na moich kontrolerach, gdy są zalogowane, a kiedy nie. A także potrzebuję jakiegoś Mock Server lub czegoś do przetestowania przeciwko moim kontrolerom lub?

Przepraszam Jestem bardzo nowy w tym temacie, ale chcę iść w dobrym kierunku, zanim utracę kontrolę nad moimi serwisami internetowymi.

Dziękuję za pomoc!

Odpowiedz

7

Używamy wtyczki REST Client wraz z wtyczką functional testing, aby przetestować wszystkie nasze usługi internetowe.

Na przykład ...

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

mam podobny kod, który wykorzystuje wbudowany w porywające (1.8) JsonSlurper które myślę, że może być bardziej niezawodne i potrzebuje tylko funkcjonalne, ale nie wtyczki testowej wtyczki Klient 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**)