Update Tests and Formatting

This commit is contained in:
Josh Cummings
2024-04-18 12:18:18 -06:00
parent c73ce7587d
commit ff551021ba
5 changed files with 28 additions and 26 deletions

View File

@@ -26,8 +26,10 @@ import org.springframework.security.authorization.method.HandleAuthorizationDeni
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@PreAuthorize(value = "hasAuthority('{value}:read')") @PreAuthorize("hasAuthority('{value}:read')")
@HandleAuthorizationDenied(handlerClass = Null.class) @HandleAuthorizationDenied(handlerClass = Null.class)
public @interface AuthorizeRead { public @interface AuthorizeRead {
String value(); String value();
} }

View File

@@ -49,17 +49,16 @@ public class DataApplication {
@Bean @Bean
public UserDetailsService userDetailsService() { public UserDetailsService userDetailsService() {
return new InMemoryUserDetailsManager( return new InMemoryUserDetailsManager(
User.withDefaultPasswordEncoder() User.withDefaultPasswordEncoder()
.username("rob") .username("rob")
.password("password") .password("password")
.authorities("message:read", "user:read") .authorities("message:read", "user:read")
.build(), .build(),
User.withDefaultPasswordEncoder() User.withDefaultPasswordEncoder()
.username("luke") .username("luke")
.password("password") .password("password")
.authorities("message:read") .authorities("message:read")
.build() .build());
);
} }
public static void main(String[] args) { public static void main(String[] args) {

View File

@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class MessageController { public class MessageController {
private final MessageRepository messages; private final MessageRepository messages;
public MessageController(MessageRepository messages) { public MessageController(MessageRepository messages) {

View File

@@ -24,8 +24,10 @@ import org.springframework.stereotype.Component;
@Component @Component
public class Null implements MethodAuthorizationDeniedHandler { public class Null implements MethodAuthorizationDeniedHandler {
@Override @Override
public Object handleDeniedInvocation(MethodInvocation methodInvocation, AuthorizationResult authorizationResult) { public Object handleDeniedInvocation(MethodInvocation methodInvocation, AuthorizationResult authorizationResult) {
return null; return null;
} }
} }

View File

@@ -22,12 +22,9 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.test.context.support.WithMockUser; import org.springframework.security.test.context.support.WithMockUser;
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.assertThatNoException;
/** /**
* @author Rob Winch * @author Rob Winch
@@ -44,43 +41,44 @@ public class DataApplicationTests {
List<Message> messages = this.repository.findAll(); List<Message> messages = this.repository.findAll();
assertThat(messages).hasSize(3); assertThat(messages).hasSize(3);
for (Message message : messages) { for (Message message : messages) {
assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(message::getSummary); assertThat(message.getSummary()).isNull();
assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(message::getText); assertThat(message.getText()).isNull();
} }
} }
@Test @Test
@WithMockUser(username="rob", authorities="message:read") @WithMockUser(username = "rob", authorities = "message:read")
void findAllOnlyToCurrentUserCanReadMessage() { void findAllOnlyToCurrentUserCanReadMessage() {
List<Message> messages = this.repository.findAll(); List<Message> messages = this.repository.findAll();
assertThat(messages).hasSize(3); assertThat(messages).hasSize(3);
for (Message message : messages) { for (Message message : messages) {
assertThatNoException().isThrownBy(message::getSummary); assertThat(message.getSummary()).isNotNull();
assertThatNoException().isThrownBy(message::getText); assertThat(message.getText()).isNotNull();
} }
} }
@Test @Test
@WithMockUser(username="rob", authorities="message:read") @WithMockUser(username = "rob", authorities = "message:read")
void findAllOnlyToCurrentUserCantReadUserDetails() { void findAllOnlyToCurrentUserCantReadUserDetails() {
List<Message> messages = this.repository.findAll(); List<Message> messages = this.repository.findAll();
assertThat(messages).hasSize(3); assertThat(messages).hasSize(3);
for (Message message : messages) { for (Message message : messages) {
User user = message.getTo(); User user = message.getTo();
assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(user::getFirstName); assertThat(user.getFirstName()).isNull();
assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(user::getLastName); assertThat(user.getLastName()).isNull();
} }
} }
@Test @Test
@WithMockUser(username="rob", authorities={ "message:read", "user:read" }) @WithMockUser(username = "rob", authorities = { "message:read", "user:read" })
void findAllOnlyToCurrentUserCanReadUserDetails() { void findAllOnlyToCurrentUserCanReadUserDetails() {
List<Message> messages = this.repository.findAll(); List<Message> messages = this.repository.findAll();
assertThat(messages).hasSize(3); assertThat(messages).hasSize(3);
for (Message message : messages) { for (Message message : messages) {
User user = message.getTo(); User user = message.getTo();
assertThatNoException().isThrownBy(user::getFirstName); assertThat(user.getFirstName()).isNotNull();
assertThatNoException().isThrownBy(user::getLastName); assertThat(user.getLastName()).isNotNull();
} }
} }
} }