/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/providers/trunk/jldap/src/test/edu/amc/sakai/user/RegexpBlacklistEidValidatorTest.java $ * $Id: RegexpBlacklistEidValidatorTest.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2008 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **********************************************************************************/ package edu.amc.sakai.user; import java.util.Collection; import java.util.HashSet; import java.util.regex.Pattern; import junit.framework.TestCase; public class RegexpBlacklistEidValidatorTest extends TestCase { private RegexpBlacklistEidValidator validator; protected void setUp() throws Exception { validator = new RegexpBlacklistEidValidator(); super.setUp(); } public void testInvalidatesNullOrWhitespaceEids() { Collection<String> regexps = new HashSet<String>(1); regexps.add("some-user-id"); validator.setEidBlacklist(regexps); // ensure it's not refusing just b/c the blacklist is empty assertFalse(validator.isSearchableEid(null)); assertFalse(validator.isSearchableEid("")); assertFalse(validator.isSearchableEid(" ")); } public void testValidatesAnyNonNullNonWhitespaceEidIfNoBlacklistSpecified() { validator.setEidBlacklist(null); // ensure the blacklist is empty assertTrue(validator.isSearchableEid("some-eid")); } public void testInvalidatesEidsMatchesByBlacklist() { final String validEid = "valid-eid"; final String invalidEid1 = "invalid-eid-1"; final String invalidEid2 = "invalid-eid-2"; final String invalidEid3 = "dangerous-eid"; Collection<String> regexps = new HashSet<String>(2); regexps.add("^invalid-eid.*$"); regexps.add("^dangerous.*$"); validator.setEidBlacklist(regexps); assertTrue(validator.isSearchableEid(validEid)); assertFalse(validator.isSearchableEid(invalidEid1)); assertFalse(validator.isSearchableEid(invalidEid2)); assertFalse(validator.isSearchableEid(invalidEid3)); } public void testRespectsConfiguredPatternFlags() { final String validEid = "valid-eid"; final String lowerCaseInvalidEid = "invalid-eid"; final String upperCaseInvalidEid = lowerCaseInvalidEid.toUpperCase(); Collection<String> regexps = new HashSet<String>(1); regexps.add("^invalid-eid$"); validator.setRegexpFlags(Pattern.CASE_INSENSITIVE); validator.setEidBlacklist(regexps); assertTrue(validator.isSearchableEid(validEid)); assertFalse(validator.isSearchableEid(lowerCaseInvalidEid)); assertFalse(validator.isSearchableEid(upperCaseInvalidEid)); } }