mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-06-13 23:52:14 +00:00
Add unit tests for setUserDetailsMapper method
Signed-off-by: dae won <eodnjs01477@gmail.com>
This commit is contained in:
parent
22511aac7f
commit
cb07031259
@ -166,6 +166,17 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
|
|||||||
setDataSource(dataSource);
|
setDataSource(dataSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the {@code RowMapper} to convert each user result row into a
|
||||||
|
* {@link UserDetails} object.
|
||||||
|
*
|
||||||
|
* The default mapper expects columns with names like 'username', 'password',
|
||||||
|
* 'enabled', etc., and maps them directly to the corresponding UserDetails
|
||||||
|
* properties.
|
||||||
|
* @param mapper the {@code RowMapper} to use for mapping rows in the database, must
|
||||||
|
* not be null
|
||||||
|
* @since 6.5
|
||||||
|
*/
|
||||||
public void setUserDetailsMapper(RowMapper<UserDetails> mapper) {
|
public void setUserDetailsMapper(RowMapper<UserDetails> mapper) {
|
||||||
Assert.notNull(mapper, "userDetailsMapper cannot be null");
|
Assert.notNull(mapper, "userDetailsMapper cannot be null");
|
||||||
this.userDetailsMapper = mapper;
|
this.userDetailsMapper = mapper;
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.security.provisioning;
|
package org.springframework.security.provisioning;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -28,6 +29,7 @@ import org.junit.jupiter.api.BeforeEach;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
import org.springframework.security.PopulatedDatabase;
|
import org.springframework.security.PopulatedDatabase;
|
||||||
import org.springframework.security.TestDataSource;
|
import org.springframework.security.TestDataSource;
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
@ -48,14 +50,17 @@ import org.springframework.security.core.userdetails.UserDetails;
|
|||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.BDDMockito.given;
|
import static org.mockito.BDDMockito.given;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link JdbcUserDetailsManager}
|
* Tests for {@link JdbcUserDetailsManager}
|
||||||
*
|
*
|
||||||
* @author Luke Taylor
|
* @author Luke Taylor
|
||||||
|
* @author dae won
|
||||||
*/
|
*/
|
||||||
public class JdbcUserDetailsManagerTests {
|
public class JdbcUserDetailsManagerTests {
|
||||||
|
|
||||||
@ -365,6 +370,24 @@ public class JdbcUserDetailsManagerTests {
|
|||||||
assertThat(updatedAuth.getCredentials()).isNull();
|
assertThat(updatedAuth.getCredentials()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setUserDetailsMapperWithNullMapperThrowsException() {
|
||||||
|
assertThatExceptionOfType(IllegalArgumentException.class)
|
||||||
|
.isThrownBy(() -> this.manager.setUserDetailsMapper(null))
|
||||||
|
.withMessage("userDetailsMapper cannot be null");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setUserDetailsMapperWithMockMapper() throws SQLException {
|
||||||
|
RowMapper<UserDetails> mockMapper = mock(RowMapper.class);
|
||||||
|
when(mockMapper.mapRow(any(), anyInt())).thenReturn(joe);
|
||||||
|
this.manager.setUserDetailsMapper(mockMapper);
|
||||||
|
insertJoe();
|
||||||
|
UserDetails newJoe = this.manager.loadUserByUsername("joe");
|
||||||
|
assertThat(joe).isEqualTo(newJoe);
|
||||||
|
verify(mockMapper).mapRow(any(), anyInt());
|
||||||
|
}
|
||||||
|
|
||||||
private Authentication authenticateJoe() {
|
private Authentication authenticateJoe() {
|
||||||
UsernamePasswordAuthenticationToken auth = UsernamePasswordAuthenticationToken.authenticated("joe", "password",
|
UsernamePasswordAuthenticationToken auth = UsernamePasswordAuthenticationToken.authenticated("joe", "password",
|
||||||
joe.getAuthorities());
|
joe.getAuthorities());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user