package com.mydreamjob.company; import com.mydreamjob.auth.AuthSessionService; import com.mydreamjob.auth.JwtTokenProvider; import com.mydreamjob.common.logging.RequestIdAccessor; import com.mydreamjob.security.CurrentUserAccessor; 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.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.jpa.mapping.JpaMetamodelMappingContext; import org.springframework.test.web.servlet.MockMvc; import java.util.List; import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @WebMvcTest(CompanyController.class) @AutoConfigureMockMvc(addFilters = false) @MockBean({JpaMetamodelMappingContext.class, JwtTokenProvider.class, AuthSessionService.class, java.time.Clock.class, RequestIdAccessor.class, CurrentUserAccessor.class, com.mydreamjob.auth.identity.IdentityAccessFilter.class}) class CompanyOnboardingControllerTest { @Autowired MockMvc mockMvc; @MockBean CompanyService companyService; @MockBean CompanyOnboardingService onboardingService; @MockBean CurrentUserAccessor userAccessor; @Test void onboardingEndpointReturnsSafeAggregateAndUsesAuthenticatedUser() throws Exception { when(userAccessor.requireUserId()).thenReturn(77L); when(onboardingService.get(77L)).thenReturn(new CompanyOnboardingResponse( new CompanyOnboardingResponse.CompanySummary(12L, "企业", null, "简介", "互联网", null, "地址", false), "UNVERIFIED", null, List.of("INDUSTRY"), List.of("UPDATE_PROFILE", "SUBMIT_VERIFICATION"))); mockMvc.perform(get("/companies/me/onboarding")) .andExpect(status().isOk()) .andExpect(jsonPath("$.data.onboardingStatus").value("UNVERIFIED")) .andExpect(jsonPath("$.data.allowedActions[1]").value("SUBMIT_VERIFICATION")) .andExpect(jsonPath("$.data.company.name").value("企业")); verify(onboardingService).get(77L); } }