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-testing-jcr-mock.git


The following commit(s) were added to refs/heads/master by this push:
     new 3b2a6bf  SLING-12195 MockUser use a home node property for the 
disabled state (#33)
3b2a6bf is described below

commit 3b2a6bf5131cd82bab50939ed7f2e79aeb0bf08a
Author: Eric Norman <enor...@apache.org>
AuthorDate: Wed Dec 13 15:17:59 2023 -0800

    SLING-12195 MockUser use a home node property for the disabled state (#33)
---
 .../java/org/apache/sling/testing/mock/jcr/MockUser.java | 16 +++++++++-------
 .../sling/testing/mock/jcr/MockUserManagerTest.java      |  8 +++++++-
 .../org/apache/sling/testing/mock/jcr/MockUserTest.java  |  5 +++++
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/mock/jcr/MockUser.java 
b/src/main/java/org/apache/sling/testing/mock/jcr/MockUser.java
index 88ed311..3645b03 100644
--- a/src/main/java/org/apache/sling/testing/mock/jcr/MockUser.java
+++ b/src/main/java/org/apache/sling/testing/mock/jcr/MockUser.java
@@ -41,8 +41,6 @@ import org.slf4j.LoggerFactory;
  */
 class MockUser extends MockAuthorizable implements User {
     private Logger logger = LoggerFactory.getLogger(getClass());
-    private boolean disabled;
-    private String disabledReason;
 
     public MockUser(@Nullable String id, @Nullable Principal principal,
             @NotNull Node homeNode,
@@ -124,21 +122,25 @@ class MockUser extends MockAuthorizable implements User {
     @Override
     public void disable(@Nullable String reason) throws RepositoryException {
         if (reason == null) {
-            this.disabled = false;
-            this.disabledReason = null;
+            if (homeNode.hasProperty(UserConstants.REP_DISABLED)) {
+                homeNode.getProperty(UserConstants.REP_DISABLED).remove();
+            }
         } else {
-            this.disabled = true;
-            this.disabledReason = reason;
+            homeNode.setProperty(UserConstants.REP_DISABLED, reason);
         }
     }
 
     @Override
     public boolean isDisabled() throws RepositoryException {
-        return disabled;
+        return homeNode.hasProperty(UserConstants.REP_DISABLED);
     }
 
     @Override
     public @Nullable String getDisabledReason() throws RepositoryException {
+        String disabledReason = null;
+        if (homeNode.hasProperty(UserConstants.REP_DISABLED)) {
+            disabledReason = 
homeNode.getProperty(UserConstants.REP_DISABLED).getString();
+        }
         return disabledReason;
     }
 
diff --git 
a/src/test/java/org/apache/sling/testing/mock/jcr/MockUserManagerTest.java 
b/src/test/java/org/apache/sling/testing/mock/jcr/MockUserManagerTest.java
index 33278ea..d63e626 100644
--- a/src/test/java/org/apache/sling/testing/mock/jcr/MockUserManagerTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockUserManagerTest.java
@@ -104,6 +104,8 @@ public class MockUserManagerTest {
         Node testuser2 = usersNode.addNode("testuser2", 
UserConstants.NT_REP_USER);
         testuser2.setProperty(UserConstants.REP_AUTHORIZABLE_ID, "testuser2");
         testuser2.setProperty(UserConstants.REP_PRINCIPAL_NAME, "testuser2");
+        // also disabled to verify this state is restored after loading
+        testuser2.setProperty(UserConstants.REP_DISABLED, "Bad Behavior");
 
         Node testsystemuser1 = usersNode.addNode("testsystemuser1", 
UserConstants.NT_REP_SYSTEM_USER);
         testsystemuser1.setProperty(UserConstants.REP_AUTHORIZABLE_ID, 
"testsystemuser1");
@@ -121,7 +123,11 @@ public class MockUserManagerTest {
         // verify password state was stored
         SimpleCredentials creds = 
(SimpleCredentials)((User)authorizable).getCredentials();
         assertTrue(PasswordUtil.isSame(String.valueOf(creds.getPassword()), 
"testPwd"));
-        assertNotNull(userManager.getAuthorizable("testuser2"));
+        @Nullable Authorizable authorizable2 = 
userManager.getAuthorizable("testuser2");
+        assertTrue(authorizable2 instanceof User);
+        // verify disabled state was stored
+        assertTrue(((User)authorizable2).isDisabled());
+        assertEquals("Bad Behavior", 
((User)authorizable2).getDisabledReason());
         assertNotNull(userManager.getAuthorizable("testsystemuser1"));
         assertNotNull(userManager.getAuthorizable("testgroup1"));
     }
diff --git a/src/test/java/org/apache/sling/testing/mock/jcr/MockUserTest.java 
b/src/test/java/org/apache/sling/testing/mock/jcr/MockUserTest.java
index a53ba15..dc803a0 100644
--- a/src/test/java/org/apache/sling/testing/mock/jcr/MockUserTest.java
+++ b/src/test/java/org/apache/sling/testing/mock/jcr/MockUserTest.java
@@ -199,6 +199,11 @@ public class MockUserTest extends 
MockAuthorizableTest<User> {
         authorizable.disable(null);
         assertFalse(authorizable.isDisabled());
         assertNull(authorizable.getDisabledReason());
+
+        // one more time for code coverage of user not previously disabled
+        authorizable.disable(null);
+        assertFalse(authorizable.isDisabled());
+        assertNull(authorizable.getDisabledReason());
     }
 
     /**

Reply via email to