Add localization to DefaultLoginPageConfigurerTests test in order to avoid failure when system language is different

This commit is contained in:
Tomasz Letachowicz 2024-10-04 16:50:00 +02:00 committed by Steve Riesenberg
parent 9a9926eaff
commit b2e0539ff5

View File

@ -22,12 +22,14 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.mock.web.MockHttpSession; import org.springframework.mock.web.MockHttpSession;
import org.springframework.security.config.ObjectPostProcessor; import org.springframework.security.config.ObjectPostProcessor;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.test.SpringTestContext; import org.springframework.security.config.test.SpringTestContext;
import org.springframework.security.config.test.SpringTestContextExtension; import org.springframework.security.config.test.SpringTestContextExtension;
import org.springframework.security.core.SpringSecurityMessageSource;
import org.springframework.security.core.userdetails.PasswordEncodedUser; import org.springframework.security.core.userdetails.PasswordEncodedUser;
import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager; import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@ -75,6 +77,8 @@ public class DefaultLoginPageConfigurerTests {
@Autowired @Autowired
MockMvc mvc; MockMvc mvc;
MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
@Test @Test
public void getWhenFormLoginEnabledThenRedirectsToLoginPage() throws Exception { public void getWhenFormLoginEnabledThenRedirectsToLoginPage() throws Exception {
this.spring.register(DefaultLoginPageConfig.class).autowire(); this.spring.register(DefaultLoginPageConfig.class).autowire();
@ -144,6 +148,8 @@ public class DefaultLoginPageConfigurerTests {
this.mvc.perform(get("/login?error").session((MockHttpSession) mvcResult.getRequest().getSession()) this.mvc.perform(get("/login?error").session((MockHttpSession) mvcResult.getRequest().getSession())
.sessionAttr(csrfAttributeName, csrfToken)) .sessionAttr(csrfAttributeName, csrfToken))
.andExpect((result) -> { .andExpect((result) -> {
String badCredentialsLocalizedMessage = this.messages
.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials");
CsrfToken token = (CsrfToken) result.getRequest().getAttribute(CsrfToken.class.getName()); CsrfToken token = (CsrfToken) result.getRequest().getAttribute(CsrfToken.class.getName());
assertThat(result.getResponse().getContentAsString()).isEqualTo(""" assertThat(result.getResponse().getContentAsString()).isEqualTo("""
<!DOCTYPE html> <!DOCTYPE html>
@ -160,7 +166,7 @@ public class DefaultLoginPageConfigurerTests {
<div class="content"> <div class="content">
<form class="login-form" method="post" action="/login"> <form class="login-form" method="post" action="/login">
<h2>Please sign in</h2> <h2>Please sign in</h2>
<div class="alert alert-danger" role="alert">Bad credentials</div> <div class="alert alert-danger" role="alert">%s</div>
<p> <p>
<label for="username" class="screenreader">Username</label> <label for="username" class="screenreader">Username</label>
<input type="text" id="username" name="username" placeholder="Username" required autofocus> <input type="text" id="username" name="username" placeholder="Username" required autofocus>
@ -178,7 +184,7 @@ public class DefaultLoginPageConfigurerTests {
</div> </div>
</body> </body>
</html>""".formatted(token.getToken())); </html>""".formatted(badCredentialsLocalizedMessage, token.getToken()));
}); });
// @formatter:on // @formatter:on
} }