This is an automated email from the ASF dual-hosted git repository.

enorman pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlet-helpers.git


The following commit(s) were added to refs/heads/master by this push:
     new 67e26aa  SLING-11817 Implement 
MockSlingHttpServletRequest#getUserPrincipal (#12)
67e26aa is described below

commit 67e26aa10fc6ce77d197004877375e344d469978
Author: Eric Norman <[email protected]>
AuthorDate: Thu Apr 6 16:07:11 2023 -0700

    SLING-11817 Implement MockSlingHttpServletRequest#getUserPrincipal (#12)
---
 .../MockSlingHttpServletRequest.java               | 24 +++++++++++++++++-----
 .../MockSlingHttpServletRequestTest.java           | 21 +++++++++++++++++++
 2 files changed, 40 insertions(+), 5 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
 
b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
index 17114a4..5919860 100644
--- 
a/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
+++ 
b/src/main/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequest.java
@@ -881,6 +881,25 @@ public class MockSlingHttpServletRequest extends 
SlingAdaptable implements Sling
             .orElse(null);
     }
 
+    @Override
+    public Principal getUserPrincipal() {
+        Principal principal = 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) {
+                principal = () -> userid;
+            }
+        }
+
+        return principal;
+    }
+
     // --- unsupported operations ---
 
     @Override
@@ -893,11 +912,6 @@ public class MockSlingHttpServletRequest extends 
SlingAdaptable implements Sling
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public Principal getUserPrincipal() {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public boolean isRequestedSessionIdFromCookie() {
         throw new UnsupportedOperationException();
diff --git 
a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
 
b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
index 8e3c9c8..5e8b3b8 100644
--- 
a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
+++ 
b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
@@ -36,6 +36,7 @@ import java.io.BufferedReader;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
+import java.security.Principal;
 import java.util.Calendar;
 import java.util.Enumeration;
 import java.util.LinkedHashMap;
@@ -62,6 +63,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.mockito.stubbing.Answer;
@@ -569,4 +571,23 @@ public class MockSlingHttpServletRequestTest {
     public void testInvalidPart() {
         request.addPart(null);
     }
+
+    @Test
+    public void testGetUserPrincipal() {
+        assertNull(null, request.getUserPrincipal());
+
+        request.setRemoteUser("admin");
+        Principal userPrincipal = request.getUserPrincipal();
+        assertNotNull(userPrincipal);
+        assertEquals("admin", userPrincipal.getName());
+    }
+    @Test
+    public void testGetUserPrincipalFromResourceResolver() {
+        Mockito.when(resourceResolver.adaptTo(Principal.class))
+            .thenReturn(() -> "rruser");
+        Principal userPrincipal = request.getUserPrincipal();
+        assertNotNull(userPrincipal);
+        assertEquals("rruser", userPrincipal.getName());
+    }
+
 }

Reply via email to