You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

47 lines
2.4 KiB

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);
}
}