2011-08-17 9 views
6

Tôi muốn thử nghiệm webservice bảo đảm của tôi như sau:thử nghiệm RESTful JSON Grails Webservice

  • UrlMapping đúng, như vậy là những dịch vụ sau đây có sẵn hay không?
  • thử nghiệm GET/POST/PUT/DELETE và phản hồi trả lại của họ cũng như các lỗi
  • Kiểm tra thông báo lỗi khi đăng nhập và chưa đăng nhập

ai đó có thể cho tôi một số gợi ý làm thế nào để làm điều này? Tôi không biết cách truy cập vào dịch vụ bảo mật grails và chạy thử nghiệm với các bộ điều khiển của tôi khi đăng nhập và khi nào thì không. Tôi cũng cần một số máy chủ Mock hoặc một cái gì đó để kiểm tra chống lại bộ điều khiển của tôi hay?

Xin lỗi tôi rất mới với chủ đề này nhưng tôi muốn đi đúng hướng trước khi mất quyền kiểm soát dịch vụ web của tôi.

Cảm ơn sự giúp đỡ của bạn!

Trả lời

7

Chúng tôi sử dụng plugin REST Client cùng với plugin functional testing để kiểm tra tất cả các dịch vụ web của chúng tôi.

Ví dụ ...

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

tôi có mã tương tự trong đó sử dụng được xây dựng trong (groovy 1.8) JsonSlurper mà tôi nghĩ có thể là đáng tin cậy hơn và chỉ cần có plugin thử nghiệm chức năng nhưng không phải là plugin của máy khách dạng 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**)