Тестовый RESTful JSON Grails Webservice - PullRequest
       18

Тестовый RESTful JSON Grails Webservice

6 голосов
/ 17 августа 2011

Я хочу проверить мой защищенный веб-сервис следующим образом:

  • UrlMapping правильно, поэтому доступны следующие сервисы или нет?
  • Проверить GET / POST / PUT / DELETE иих предоставленные отзывы, а также ошибки
  • Проверка сообщений об ошибках при входе в систему и без входа в систему

Может кто-нибудь дать мне несколько советов, как это сделать?Я понятия не имею, как получить доступ к службе безопасности Grails, а также как выполнять тесты на моих контроллерах при входе в систему, а когда нет.Кроме того, мне нужен какой-нибудь Mock Server или что-то для тестирования на моих контроллерах или?

Извините, я очень новичок в этой теме, но я хочу пойти в правильном направлении, прежде чем потерять контроль над моими веб-сервисами.

Спасибо за помощь!

Ответы [ 2 ]

7 голосов
/ 17 августа 2011

Мы используем плагин REST Client вместе с плагином функциональное тестирование для тестирования всех наших веб-сервисов.

Например ...

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 голосов
/ 04 октября 2012

У меня есть подобный код, который использует встроенный (groovy 1.8) JsonSlurper, который, я думаю, мог бы быть более надежным и требует только плагин функционального тестирования, но не плагин REST Client.

    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**)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...