diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java index b597479d2..ef5395505 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelector.java @@ -184,7 +184,7 @@ public class UserAccountsSelector { if (!roleFilterUri.isEmpty()) { String clean = escapeForRegex(roleFilterUri); filters += "OPTIONAL { ?uri auth:hasPermissionSet ?role } \n" - + " FILTER (REGEX(str(?role), '" + clean + "'))"; + + " FILTER (REGEX(str(?role), '^" + clean + "$'))"; } if ((!roleFilterUri.isEmpty()) && (!searchTerm.isEmpty())) { diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java index 5194dfd7c..6132579e3 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.java @@ -267,6 +267,12 @@ public class UserAccountsSelectorTest extends AbstractTestClass { "user09"); } + @Test + public void filterAgainstRole2() { + selectOnCriteria(20, 1, DEFAULT_ORDERING, NS_MINE + "role2", ""); + assertSelectedUris(2, "user03", "user10"); + } + @Test public void filterAgainstNoSuchRole() { selectOnCriteria(20, 1, DEFAULT_ORDERING, "BogusRole", ""); diff --git a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 index c6c8fe097..15f41d4dd 100644 --- a/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 +++ b/webapp/test/edu/cornell/mannlib/vitro/webapp/controller/accounts/UserAccountsSelectorTest.n3 @@ -103,7 +103,7 @@ mydomain:user07 auth:loginCount 1 ; # auth:lastLoginTime NONE ; # auth:status NONE ; - auth:hasPermissionSet mydomain:role2 ; + auth:hasPermissionSet mydomain:role22 ; . mydomain:user08 @@ -155,3 +155,10 @@ mydomain:role2 rdfs:label "Role 2" ; . +# this is intentionally a typographical extension of mydomain:role2 +# to test that our reg-exp filters correctly. +mydomain:role22 + a auth:PermissionSet ; + rdfs:label "Role 22" ; + . +