2015-10-08 3 views
0

Я хочу проверить безопасность веб-приложения Grails, гарантируя, что только определенные роли могут POST и что соответствующие ответы даны. У меня есть следующий в интеграционном тесте:Grails 2.5.0 - интеграционное тестирование с весной безопасности для службы RESTful

class MyIntegrationSpec extends IntegrationSpec { 
    def grailsApplication 
    def testdataService 

    def setup() { 
     testdataService.addTestData() 
     SpringSecurityUtils.reauthenticate 'user1', null 
    } 

    def cleanup() { 
    } 

    void "test case"() { 
     given: 
     RestBuilder rest = new RestBuilder() 

     when: 
     RestResponse response = rest.post("http://localhost:8080/${grailsApplication.metadata.'app.name'}/mycontroller/myaction") { 
      json([ 
        data1: "foo", 
        data2: "bar" 
      ]) 
     } 

     then: 
     response.status == 200 
    } 
} 

К сожалению, интеграционный тест выполняется до Spring Security запускается, и я получаю следующее сообщение об ошибке:

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:8080/myapp/mycontroller/myaction":Connection refused: connect; nested exception is java.net.ConnectException 

Как я могу получить мои тесты интеграции для запуска, чтобы я мог проверить опыт, особенно безопасность, пользователей?

ответ

0

Веб-сервер не запускается для тестов интеграции. Контекст приложения Spring запускается, плагины активны, доступна реальная база данных (по умолчанию в памяти, но вы можете настроить ее на указание на сервер) и т. Д., Но не веб-сервер.

Вам необходимо использовать функциональные тесты, если вы хотите протестировать безопасность и другие функции, требующие работы веб-сервера. Я использовал http://grails.org/plugin/functional-test, и это довольно хорошо, но несколько глючит. Я использовал версию 1.2.7, но вижу, что теперь есть версия 2.0, поэтому она может работать лучше.

Смежные вопросы