diff --git a/backend/src/test/java/com/recipeapp/auth/AuthControllerTest.java b/backend/src/test/java/com/recipeapp/auth/AuthControllerTest.java index d42f40e..f82a582 100644 --- a/backend/src/test/java/com/recipeapp/auth/AuthControllerTest.java +++ b/backend/src/test/java/com/recipeapp/auth/AuthControllerTest.java @@ -10,16 +10,20 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.http.MediaType; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import java.util.UUID; +import static org.hamcrest.Matchers.notNullValue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @ExtendWith(MockitoExtension.class) class AuthControllerTest { @@ -95,6 +99,40 @@ class AuthControllerTest { .andExpect(jsonPath("$.data.systemRole").value("user")); } + @Test + void signupShouldStoreSecurityContextInSession() throws Exception { + var request = new SignupRequest("sarah@example.com", "s3cure!Pass", "Sarah"); + var response = UserResponse.basic(UUID.randomUUID(), "sarah@example.com", "Sarah"); + + when(authService.signup(any(SignupRequest.class))).thenReturn(response); + + mockMvc.perform(post("/v1/auth/signup") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(request))) + .andExpect(status().isCreated()) + .andExpect(request().sessionAttribute( + HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, + notNullValue())); + } + + @Test + void loginShouldStoreSecurityContextInSession() throws Exception { + var request = new LoginRequest("sarah@example.com", "s3cure!Pass"); + var response = UserResponse.withHousehold( + UUID.randomUUID(), "sarah@example.com", "Sarah", + UUID.randomUUID(), "Smith family", "planner", "user"); + + when(authService.login(any(LoginRequest.class))).thenReturn(response); + + mockMvc.perform(post("/v1/auth/login") + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(request))) + .andExpect(status().isOk()) + .andExpect(request().sessionAttribute( + HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, + notNullValue())); + } + @Test void logoutShouldReturn204() throws Exception { mockMvc.perform(post("/v1/auth/logout"))