2
我有一個彈簧休息mvc控制器,其URL爲「/ public/rest/vehicle/get」。在我的安全配置中,我已經定義任何/ public/rest的請求都不應該要求驗證。SpringBoot @WebMvcTest安全問題
http.
csrf().disable()
.authorizeRequests()
.antMatchers("/home/**", "/**", "/css/**", "/js/**", "/fonts/**", "/images/**", "/public/rest/**","/login*","/signin/**","/signup/**").permitAll()
.antMatchers("/property/**").authenticated()
.and()
.formLogin().loginPage("/login").permitAll()
.and().httpBasic().disable();
當我使用瀏覽器或任何其他方式啓動我的應用程序並提交請求時,此配置正常工作。 現在,我有一個測試類,它看起來像這樣,
@RunWith(SpringRunner.class)
@WebMvcTest(VehicleController.class)
public class VehicleControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private VehicleService vehicleService;
@Test
public void getVehicle() throws Exception {
given(this.vehicleService.get(0)).
willReturn(new VehicleEquipmentDTO());
this.mockMvc.perform(get("/public/rest/vehicle/get").param("id","0"))
.andDo(print())
.andExpect(status().isOk());//.andExpect(content().string("Honda Civic"));
}}
現在,當我運行這個測試,它說
java.lang.AssertionError: Status
Expected :200
Actual :401
當我打印請求響應,我看到它是在抱怨,因爲的安全。 「」錯誤消息=需要完全驗證來訪問此資源「 任何想法,爲什麼它不與我有的安全配置一起工作,以及有什麼辦法強制它使用正確的配置?在此先感謝