luchob/softuni-feb2023

Гърмеж на интеграционен тест.

Closed this issue · 1 comments

Привет Лъчо! На финалната права съм, но от вчера ми гърми един интеграционен тест и не мога да го оправя. Очаквам да ме redirect-не, а гърми с client error. Не разбирам защо. Това, което искам да тествам е при неуспешен опит за логване, да има редирект към същата страница с флаш атрибути. Може ли да ми кажеш къде бъркам? Теста се намира в LoginControllerIT, метода е testFailedLogin.

Линк към проекта: https://github.com/Alexander-Kostov/EStore-Project

luchob commented

Здравей!

Ако се загледаш ти дава 403, forbidden. Причината е, че това е POST заявка и като такава трябва да включиш csrf тоукън. Това става много лесно. Ето така:

        mockMvc.perform(post("/users/login-error")
                        .param(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY, username)
                        .param(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_PASSWORD_KEY, password)
                        .with(csrf())) // <-- ТУК
                .andExpect(status().is3xxRedirection())
                .andExpect(redirectedUrl("/users/login"))
                .andExpect(flash().attributeExists(UsernamePasswordAuthenticationFilter.SPRING_SECURITY_FORM_USERNAME_KEY))
                .andExpect(flash().attribute("badCredentials", true));

Твоето, но с едно добавено with(csrf()).Това е, става зелен.

Поздрави,
Л.