|
@@ -22,9 +22,12 @@ 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
|
|
@@ -37,9 +40,47 @@ public class DataApplicationTests {
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@WithMockUser("rob")
|
|
@WithMockUser("rob")
|
|
- void findAllOnlyToCurrentUser() {
|
|
|
|
|
|
+ void findAllOnlyToCurrentUserCantReadMessage() {
|
|
List<Message> messages = this.repository.findAll();
|
|
List<Message> messages = this.repository.findAll();
|
|
assertThat(messages).hasSize(3);
|
|
assertThat(messages).hasSize(3);
|
|
|
|
+ for (Message message : messages) {
|
|
|
|
+ assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(message::getSummary);
|
|
|
|
+ assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(message::getText);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Test
|
|
|
|
+ @WithMockUser(username="rob", authorities="message:read")
|
|
|
|
+ void findAllOnlyToCurrentUserCanReadMessage() {
|
|
|
|
+ List<Message> messages = this.repository.findAll();
|
|
|
|
+ assertThat(messages).hasSize(3);
|
|
|
|
+ for (Message message : messages) {
|
|
|
|
+ assertThatNoException().isThrownBy(message::getSummary);
|
|
|
|
+ assertThatNoException().isThrownBy(message::getText);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ @WithMockUser(username="rob", authorities="message:read")
|
|
|
|
+ void findAllOnlyToCurrentUserCantReadUserDetails() {
|
|
|
|
+ List<Message> messages = this.repository.findAll();
|
|
|
|
+ assertThat(messages).hasSize(3);
|
|
|
|
+ for (Message message : messages) {
|
|
|
|
+ User user = message.getTo();
|
|
|
|
+ assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(user::getFirstName);
|
|
|
|
+ assertThatExceptionOfType(AccessDeniedException.class).isThrownBy(user::getLastName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Test
|
|
|
|
+ @WithMockUser(username="rob", authorities={ "message:read", "user:read" })
|
|
|
|
+ void findAllOnlyToCurrentUserCanReadUserDetails() {
|
|
|
|
+ List<Message> messages = this.repository.findAll();
|
|
|
|
+ assertThat(messages).hasSize(3);
|
|
|
|
+ for (Message message : messages) {
|
|
|
|
+ User user = message.getTo();
|
|
|
|
+ assertThatNoException().isThrownBy(user::getFirstName);
|
|
|
|
+ assertThatNoException().isThrownBy(user::getLastName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|