From 53a54ddbdab855c6d1a87bebae77063cee556987 Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Sun, 20 Nov 2022 13:16:42 +0100 Subject: [PATCH] #62 added a missing test to the UserController --- .../security/controllers/UserController.java | 3 +- .../controllers/UserControllerTest.java | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java diff --git a/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java b/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java index 995e00a..a269109 100644 --- a/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java +++ b/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java @@ -20,8 +20,9 @@ import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths @RequestMapping(value = QUARTZ_MANAGER_AUTH_PATH, produces = MediaType.APPLICATION_JSON_VALUE) public class UserController { + public static final String WHOAMI_URL = "/whoami"; - @GetMapping("/whoami") + @GetMapping(WHOAMI_URL) public ResponseEntity getLoggedUser() { SecurityContext context = SecurityContextHolder.getContext(); if (context != null && context.getAuthentication() != null) diff --git a/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java b/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java new file mode 100644 index 0000000..79c8a7e --- /dev/null +++ b/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java @@ -0,0 +1,41 @@ +package it.fabioformosa.quartzmanager.api.security.controllers; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_AUTH_PATH; +import static it.fabioformosa.quartzmanager.api.security.controllers.UserController.WHOAMI_URL; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +@TestPropertySource(properties = { + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=admin", + "quartz-manager.security.accounts.in-memory.users[0].password=admin", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class UserControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + @WithMockUser("admin") + void givenAnUser_whenCalledTheWhoamiEndpoint_thenShouldReturn2xx() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(QUARTZ_MANAGER_AUTH_PATH + WHOAMI_URL)) + .andExpect(status().isOk()); + } + + @Test + void givenAnAnonymousUser_whenCalledTheWhoamiEndpoint_thenShouldReturnNotFound() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(QUARTZ_MANAGER_AUTH_PATH + WHOAMI_URL)) + .andExpect(status().isUnauthorized()); + } +}