@WithMockUser не аутентифицируется - PullRequest
0 голосов
/ 10 января 2019

Аннотируя @WithMockUser в моем методе тестирования, не следует проверять вход в систему и, следовательно, перенаправить на '/'

def index() {
    if (springSecurityService.isLoggedIn()) {
        redirect uri: '/'
    }
    else {
        redirect action: 'auth', params: params
    }
}

Это контроллер, который я пытаюсь проверить.

def springSecurityService = Mock( SpringSecurityService )

void setup() {
controller.springSecurityService = springSecurityService
}
@WithMockUser
void "test index"() {
when:
    controller.index()
then:
    //1 * springSecurityService.isLoggedIn() >> true
    response.redirectedUrl == '/'
when:
    controller.response.reset()
    controller.index()
then:
    response.redirectedUrl == '/login/auth'
    }

Это мой метод испытаний. Если я откомментирую строку, чтобы проверка стала истинной, тест пройден.

1 Ответ

0 голосов
/ 10 января 2019

@WithMockUser работает, вот простой пример Java , который является частью образца , который вы можете загрузить и запустить самостоятельно. Просто импортируйте весь проект в вашу среду IDE

@Test
@DisplayName("authenticated browser with mock user")
@WithMockUser
public void htmlRequestWithMockUser() throws Exception {
    mvc.perform(
        get("/secure")
    )
        .andExpect(status().isOk())
        .andExpect(content().string(containsString("You are authenticated")))
    ;
}

Я не большой пользователь Groovy, но я предполагаю, что ваш код не использует объект real SpringSecurityService, потому что в первой строке вы его высмеяли

def springSecurityService = Mock( SpringSecurityService )

Для меня это выглядит так, будто вы пишете тест, чтобы проверить ваш макет вместо реального объекта. А вы никогда не программировали свой макет, чтобы он возвращал истину в зависимости от условия. Вы, вероятно, не должны издеваться над SpringSecurityService

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...