Preserve custom user type in InMemoryUserDetailsManager #15498
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes issue gh-3192 by allowing
MutableUserDetails
to be stored and loaded inside theInMemoryUserDetailsManager
instead of always wrapping it intoMutableUser
. The custom user type must implementCredentialsContainer
in order to be returned byloadUserByUsername()
and not transformed intoUser
.I wanted to write tests for the new cases, and I saw that methods were not previously covered so I wrote tests for all cases for
createUser()
andloadUserByUsername()
. However, I have concerns about some tests:createUserWhenNotInstanceOfMutableUserDetailsThenShouldWrapIntoMutableUser
andcreateUserWhenInstanceOfMutableUserDetailsThenShouldNotWrapIntoMutableUser
can't directly accessMap<String, MutableUserDetails> users
to get the underlying user & type, so they are relying onloadUserByUsername
to get the user and as such are not pure.If you think this can be improved somehow, I am open to feedback.