[Spring Boot] How to stub @AuthenticationPrincipal argument with Spring-Security in Unit Tests
There may be some situations where user information is required as part of business logic. Quite often, this process takes place after authentication. In this article, let us find out how user information can be obtained as well as how to write unit tests for such cases.
First of all, let us look at a sample controller below. Using
Spring Security it is possible to obtain information of the current logged-in user by using
For the purpose of testing, we hope to invoke
/username endpoint to get the username. But unlike
@PathVariable (where we can inject right into the URL) or
@RequestBody (where we can pass in the content and content type) injecting user information might not seem natural.
MockMvc, it is possible to resolve custom argument and let us see how to do that. For this, let us create a custom argument resolver class where it returns a pre-defined user information. This seems adequate because when using JWT token, the token is likely to be verified before the reaching the implementation of the
Lastly, the custom argument resolver class can be used when setting up