如何在spring boot中模拟带有自定义注解的方法?

atmip9wb  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(262)

我有一个受oauth保护的服务。这是我的restcontroller的结构:

  1. @CrossOrigin(origins = "*", allowedHeaders = "*")
  2. @RestController
  3. public class MainController {
  4. @PostMapping("/v1/api")
  5. @CustomAuthorizer(RequestURI = "api", ResourceType = ResourceType.API, GrantAccess = GrantAccess.EXECUTE)
  6. public ResponseEntity<List<Details>> api(
  7. @ApiParam(value = "Provide here request body", required = true) @Valid @RequestBody Input input,
  8. @Valid @RequestParam("tId") String tenantId, @RequestHeader("Authorization") String auth) {
  9. }

这是我的测试

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class MainControllerMockTest {
  4. @WithMockUser( username = "test")
  5. @Test
  6. public void testApi() throws Exception {
  7. Input input = new Input();
  8. //Set input here
  9. MvcResult result = mockMvc.perform(post("/v1/api?tId=test")
  10. .content(inputJson).contentType(MediaType.APPLICATION_JSON).header(HttpHeaders.AUTHORIZATION, "Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJsd2lsbGlhbXMxNiIsInJvbGVzIjoidXNlciIsImlhdCI6MTUxNDQ0OTgzM30.WKMQ_oPPiDcc6sGtMJ1Y9hlrAAc6U3xQLuEHyAnM1FU")
  11. .with(SecurityMockMvcRequestPostProcessors.csrf()))
  12. .andExpect(status().isOk()).andReturn();
  13. System.out.println(result.getResponse().getContentAsString());
  14. assertEquals(200, result.getResponse().getStatus());
  15. }
  16. }

身份验证是由我们定制的oauth库完成的,所以当调用/api时,它会检查权限,有没有办法绕过它?我也试着模仿那段代码,但没有成功。任何建议都很好。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题