Author: baedke
Date: Fri Apr 21 15:55:39 2017
New Revision: 1792229
URL: http://svn.apache.org/viewvc?rev=1792229&view=rev
Log:
OAK-6118: XPathConditionVisitor wrongly escapes string values for
ImpersonationCondition
Removed the escaping, added test case.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathConditionVisitor.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathConditionVisitor.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathConditionVisitor.java?rev=1792229&r1=1792228&r2=1792229&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathConditionVisitor.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathConditionVisitor.java
Fri Apr 21 15:55:39 2017
@@ -111,7 +111,7 @@ class XPathConditionVisitor implements C
statement.append('@')
.append(QueryUtil.escapeForQuery(UserConstants.REP_IMPERSONATORS,
namePathMapper))
.append("='")
- .append(QueryUtil.escapeForQuery(condition.getName()))
+ .append(condition.getName())
.append('\'');
}
}
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java?rev=1792229&r1=1792228&r2=1792229&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java
Fri Apr 21 15:55:39 2017
@@ -112,6 +112,7 @@ public class UserQueryTest extends Abstr
addMembers(insects, ant, bee, fly);
User jackrabbit = createUser("jackrabbit", "carrots", 2500, true);
+ User backslash = createUser("foo\\bar", "characters", 2500, false);
User deer = createUser("deer", "leaves", 120000, true);
User opossum = createUser("opossum", "fruit", 1200, true);
kangaroo = createUser("kangaroo", "grass", 90000, true);
@@ -160,6 +161,7 @@ public class UserQueryTest extends Abstr
setProperty("continent", vf.createValue("America"), opossum);
elephant.getImpersonation().grantImpersonation(jackrabbit.getPrincipal());
+
elephant.getImpersonation().grantImpersonation(backslash.getPrincipal());
authorizables.addAll(users);
authorizables.addAll(groups);
@@ -664,6 +666,20 @@ public class UserQueryTest extends Abstr
}
});
+ Iterator<User> expected = Iterators.singletonIterator(elephant);
+ assertTrue(result.hasNext());
+ assertSameElements(expected, result);
+ }
+
+ @Test
+ public void testImpersonationWithBackslash() throws RepositoryException {
+ Iterator<Authorizable> result = userMgr.findAuthorizables(new Query() {
+ public <T> void build(QueryBuilder<T> builder) {
+ builder.setCondition(builder.
+ impersonates("foo\\bar"));
+ }
+ });
+
Iterator<User> expected = Iterators.singletonIterator(elephant);
assertTrue(result.hasNext());
assertSameElements(expected, result);