I have spring-security-oauth2 application which is a ResourceServer. We have a custom PrincipalExtractor class that builds the custom Principal object. This custom Principal object do not extend Principal or UserDetails
class CustomUser{
//some custom fields
}
class CustomPrincipalExtractor implements PrincipalExtractor{
@Override
public CustomUser extractPrincipal(Map<String, Object> map){
return new CustomUser(map);
}
}
class SomeController{
@GetMapping
public ResponseEntity(@AuthenticationPrincipal CustomUser user){
//able to get user object
}
}
The above code works fine. Now I want to test the controller, but not able to pass CustomUser instance.
@SpringBootTest
@AutoConfigureMockMvc
public class SomeControllerTest{
@Autowired
private MockMvc mockMvc;
@Test
public void test(){
mockMvc.perform(get(...).principal(CANNOT pass CustomUser as it does not implement Principal))
}
}
I looked at some other solutions which asks to have custom HandlerMethodArgumentResolver but not sure how configure autoconfigured MockMvc