SLING-11817 getUserPrincipal() should return null for anonymous requests (#13)
diff --git a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
index 5919860..e9f2e23 100644
--- a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
+++ b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
@@ -884,15 +884,16 @@
@Override
public Principal getUserPrincipal() {
Principal principal = null;
- ResourceResolver rr = getResourceResolver();
- if (rr != null) {
- principal = rr.adaptTo(Principal.class);
- }
+ // always return null for anonymous user
+ final String userid = getRemoteUser();
+ if (userid != null) {
+ ResourceResolver rr = getResourceResolver();
+ if (rr != null) {
+ principal = rr.adaptTo(Principal.class);
+ }
- if (principal == null) {
- //fallback to the userid
- final String userid = getRemoteUser();
- if (userid != null) {
+ if (principal == null) {
+ //fallback to the userid
principal = () -> userid;
}
}
diff --git a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
index 5e8b3b8..5916eb9 100644
--- a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
+++ b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
@@ -585,6 +585,11 @@
public void testGetUserPrincipalFromResourceResolver() {
Mockito.when(resourceResolver.adaptTo(Principal.class))
.thenReturn(() -> "rruser");
+ // always returns null for anonymous user
+ assertNull(request.getUserPrincipal());
+
+ // make remote user not anonymous
+ request.setRemoteUser("remoteuser");
Principal userPrincipal = request.getUserPrincipal();
assertNotNull(userPrincipal);
assertEquals("rruser", userPrincipal.getName());