|
@@ -22,23 +22,17 @@ import org.junit.Test;
|
|
|
import org.junit.runner.RunWith;
|
|
|
import org.mockito.Mock;
|
|
|
import org.mockito.runners.MockitoJUnitRunner;
|
|
|
-import org.springframework.core.io.Resource;
|
|
|
import org.springframework.core.io.ResourceLoader;
|
|
|
import org.springframework.security.core.userdetails.User;
|
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
|
import org.springframework.security.util.InMemoryResource;
|
|
|
|
|
|
-import java.io.ByteArrayInputStream;
|
|
|
-import java.io.IOException;
|
|
|
-import java.io.InputStream;
|
|
|
-import java.nio.charset.Charset;
|
|
|
import java.util.Collection;
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
|
|
|
import static org.mockito.Mockito.mock;
|
|
|
import static org.mockito.Mockito.verify;
|
|
|
-import static org.mockito.Mockito.when;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -47,20 +41,16 @@ import static org.mockito.Mockito.when;
|
|
|
*/
|
|
|
@RunWith(MockitoJUnitRunner.class)
|
|
|
public class UserDetailsResourceFactoryBeanTest {
|
|
|
- String location = "classpath:users.properties";
|
|
|
-
|
|
|
@Mock
|
|
|
ResourceLoader resourceLoader;
|
|
|
|
|
|
UserDetailsResourceFactoryBean factory = new UserDetailsResourceFactoryBean();
|
|
|
|
|
|
@Test
|
|
|
- public void getObjectWhenResourceLoaderNullThenThrowsIllegalStateException() throws Exception {
|
|
|
- factory.setPropertiesResourceLocation(location);
|
|
|
-
|
|
|
- assertThatThrownBy(() -> factory.getObject() )
|
|
|
+ public void setResourceLoaderWhenNullThenThrowsException() throws Exception {
|
|
|
+ assertThatThrownBy(() -> factory.setResourceLoader(null) )
|
|
|
.isInstanceOf(IllegalArgumentException.class)
|
|
|
- .hasStackTraceContaining("resourceLoader cannot be null if propertiesResource is null");
|
|
|
+ .hasStackTraceContaining("resourceLoader cannot be null");
|
|
|
}
|
|
|
|
|
|
@Test
|
|
@@ -68,40 +58,29 @@ public class UserDetailsResourceFactoryBeanTest {
|
|
|
factory.setResourceLoader(resourceLoader);
|
|
|
|
|
|
assertThatThrownBy(() -> factory.getObject() )
|
|
|
- .isInstanceOf(IllegalStateException.class)
|
|
|
- .hasStackTraceContaining("Either propertiesResource cannot be null or both resourceLoader and propertiesResourceLocation cannot be null");
|
|
|
+ .isInstanceOf(IllegalArgumentException.class)
|
|
|
+ .hasStackTraceContaining("resource cannot be null if resourceLocation is null");
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void getObjectWhenPropertiesResourceLocationSingleUserThenThrowsGetsSingleUser() throws Exception {
|
|
|
- setResource("user=password,ROLE_USER");
|
|
|
+ factory.setResourceLocation("classpath:users.properties");
|
|
|
|
|
|
Collection<UserDetails> users = factory.getObject();
|
|
|
|
|
|
- UserDetails expectedUser = User.withUsername("user")
|
|
|
- .password("password")
|
|
|
- .authorities("ROLE_USER")
|
|
|
- .build();
|
|
|
- assertThat(users).containsExactly(expectedUser);
|
|
|
+ assertLoaded();
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void getObjectWhenPropertiesResourceSingleUserThenThrowsGetsSingleUser() throws Exception {
|
|
|
- factory.setPropertiesResource(new InMemoryResource("user=password,ROLE_USER"));
|
|
|
+ factory.setResource(new InMemoryResource("user=password,ROLE_USER"));
|
|
|
|
|
|
- Collection<UserDetails> users = factory.getObject();
|
|
|
-
|
|
|
- UserDetails expectedUser = User.withUsername("user")
|
|
|
- .password("password")
|
|
|
- .authorities("ROLE_USER")
|
|
|
- .build();
|
|
|
- assertThat(users).containsExactly(expectedUser);
|
|
|
+ assertLoaded();
|
|
|
}
|
|
|
|
|
|
@Test
|
|
|
public void getObjectWhenInvalidUserThenThrowsMeaningfulException() throws Exception {
|
|
|
- setResource("user=invalidFormatHere");
|
|
|
-
|
|
|
+ factory.setResource(new InMemoryResource("user=invalidFormatHere"));
|
|
|
|
|
|
assertThatThrownBy(() -> factory.getObject() )
|
|
|
.isInstanceOf(IllegalStateException.class)
|
|
@@ -109,11 +88,13 @@ public class UserDetailsResourceFactoryBeanTest {
|
|
|
.hasStackTraceContaining("invalidFormatHere");
|
|
|
}
|
|
|
|
|
|
- private void setResource(String contents) throws IOException {
|
|
|
- Resource resource = new InMemoryResource(contents);
|
|
|
- when(resourceLoader.getResource(location)).thenReturn(resource);
|
|
|
+ private void assertLoaded() throws Exception {
|
|
|
+ Collection<UserDetails> users = factory.getObject();
|
|
|
|
|
|
- factory.setPropertiesResourceLocation(location);
|
|
|
- factory.setResourceLoader(resourceLoader);
|
|
|
+ UserDetails expectedUser = User.withUsername("user")
|
|
|
+ .password("password")
|
|
|
+ .authorities("ROLE_USER")
|
|
|
+ .build();
|
|
|
+ assertThat(users).containsExactly(expectedUser);
|
|
|
}
|
|
|
}
|