imported Marvin's patch with some modifications to fix support for proxying in a non-Spring environment.
This commit is contained in:
Scott Battaglia 2009-07-29 13:54:29 +00:00
parent 9b1ba497e3
commit 745c45718c
3 changed files with 64 additions and 22 deletions

View File

@ -91,7 +91,7 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal
if (CommonUtils.isNotBlank(allowAnyProxy) || CommonUtils.isNotBlank(allowedProxyChains)) {
final Cas20ProxyTicketValidator v = new Cas20ProxyTicketValidator(casServerUrlPrefix);
v.setAcceptAnyProxy(parseBoolean(allowAnyProxy));
v.setAllowedProxyChains(new ProxyList(constructListOfProxies(allowedProxyChains)));
v.setAllowedProxyChains(createProxyList(allowedProxyChains));
validator = v;
} else {
validator = new Cas20ServiceTicketValidator(casServerUrlPrefix);
@ -117,17 +117,15 @@ public class Cas20ProxyReceivingTicketValidationFilter extends AbstractTicketVal
return validator;
}
protected final List constructListOfProxies(final String proxies) {
protected final ProxyList createProxyList(final String proxies) {
if (CommonUtils.isBlank(proxies)) {
return new ArrayList();
return new ProxyList();
}
final String[] splitProxies = proxies.split("\n");
final List items = Arrays.asList(splitProxies);
final ProxyListEditor editor = new ProxyListEditor();
editor.setValue(items);
return (List) editor.getValue();
}
editor.setAsText(proxies);
return (ProxyList) editor.getValue();
}
public void destroy() {
super.destroy();

View File

@ -5,6 +5,8 @@
*/
package org.jasig.cas.client.validation;
import org.jasig.cas.client.util.CommonUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
@ -22,6 +24,13 @@ public final class ProxyList {
private final List proxyChains;
public ProxyList(final List proxyChains) {
CommonUtils.assertNotNull(proxyChains, "List of proxy chains cannot be null.");
// Assert that all entries in the list are String[]
for (final Iterator iter = proxyChains.iterator(); iter.hasNext();) {
CommonUtils.assertTrue(iter.next() instanceof String[], "Proxy chains must contain String[] items exclusively.");
}
this.proxyChains = proxyChains;
}

View File

@ -1,21 +1,21 @@
package org.jasig.cas.client.validation;
import junit.framework.TestCase;
import java.util.Timer;
import java.util.TimerTask;
import org.jasig.cas.client.proxy.CleanUpTimerTask;
import org.jasig.cas.client.proxy.ProxyGrantingTicketStorage;
import org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl;
import org.jasig.cas.client.util.MethodFlag;
import org.springframework.mock.web.MockFilterConfig;
import java.util.Timer;
import java.util.TimerTask;
/**
* Unit test for {@link Cas20ProxyReceivingTicketValidationFilter}
*
* Unit test for {@link org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter}
*
* @author Brad Cupit (brad [at] lsu {dot} edu)
*/
public class Cas20ProxyReceivingTicketValidationFilterTest extends TestCase {
public class Cas20ProxyReceivingTicketValidationFilterTests extends TestCase {
private final Timer defaultTimer = new Timer(true);
@ -59,7 +59,7 @@ public class Cas20ProxyReceivingTicketValidationFilterTest extends TestCase {
filter.setTimerTask(defaultTimerTask);
filter.init();
filter.destroy();
assertTrue(cancelMethodFlag.wasCalled());
}
@ -115,11 +115,11 @@ public void testCallsCleanAllOnSchedule() throws Exception {
filter.destroy();
}
public void testThrowsForNullStorage() throws Exception {
Cas20ProxyReceivingTicketValidationFilter filter = newCas20ProxyReceivingTicketValidationFilter();
filter.setProxyGrantingTicketStorage(null);
try {
filter.init();
fail("expected an exception due to null ProxyGrantingTicketStorage");
@ -127,15 +127,50 @@ public void testCallsCleanAllOnSchedule() throws Exception {
// test passes
}
}
public void testGetTicketValidator() throws Exception {
Cas20ProxyReceivingTicketValidationFilter filter = newCas20ProxyReceivingTicketValidationFilter();
filter.setProxyGrantingTicketStorage(storage);
filter.setMillisBetweenCleanUps(250);
filter.setTimer(defaultTimer);
filter.setTimerTask(new TimerTask() {
public void run() {}
});
filter.init();
// Test case #1
final MockFilterConfig config1 = new MockFilterConfig();
config1.addInitParameter("allowedProxyChains", "https://a.example.com");
config1.addInitParameter("casServerUrlPrefix", "https://cas.jasig.org/");
assertNotNull(filter.getTicketValidator(config1));
// Test case #2
final MockFilterConfig config2 = new MockFilterConfig();
config2.addInitParameter(
"allowedProxyChains",
"https://a.example.com https://b.example.com");
config2.addInitParameter("casServerUrlPrefix", "https://cas.jasig.org/");
assertNotNull(filter.getTicketValidator(config2));
// Test case #3
final MockFilterConfig config3 = new MockFilterConfig();
config3.addInitParameter(
"allowedProxyChains",
"https://a.example.com https://b.example.com\nhttps://c.example.com");
config3.addInitParameter("casServerUrlPrefix", "https://cas.jasig.org/");
assertNotNull(filter.getTicketValidator(config3));
}
/**
* construct a working {@link Cas20ProxyReceivingTicketValidationFilter}
* construct a working {@link org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter}
*/
private Cas20ProxyReceivingTicketValidationFilter newCas20ProxyReceivingTicketValidationFilter() {
final Cas20ProxyReceivingTicketValidationFilter filter = new Cas20ProxyReceivingTicketValidationFilter();
filter.setServerName("localhost");
filter.setTicketValidator(new Cas20ProxyTicketValidator(""));
return filter;
}
}
}