CASC-88
imported Marvin's patch with some modifications to fix support for proxying in a non-Spring environment.
This commit is contained in:
parent
9b1ba497e3
commit
745c45718c
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue