From 9b1ba497e3df6bcecb5747815e601352a746a02a Mon Sep 17 00:00:00 2001 From: Scott Battaglia Date: Wed, 29 Jul 2009 12:26:17 +0000 Subject: [PATCH] CASC-87 improved utility to allow for arbitrary parameters to be passed at login --- .../org/jasig/cas/client/util/CommonUtils.java | 2 +- .../jasig/cas/client/util/CommonUtilsTests.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java index b8e4a62..1904de8 100644 --- a/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java +++ b/cas-client-core/src/main/java/org/jasig/cas/client/util/CommonUtils.java @@ -138,7 +138,7 @@ public final class CommonUtils { */ public static final String constructRedirectUrl(final String casServerLoginUrl, final String serviceParameterName, final String serviceUrl, final boolean renew, final boolean gateway) { try { - return casServerLoginUrl + "?" + serviceParameterName + "=" + return casServerLoginUrl + (casServerLoginUrl.indexOf("?") != -1 ? "&" : "?") + serviceParameterName + "=" + URLEncoder.encode(serviceUrl, "UTF-8") + (renew ? "&renew=true" : "") + (gateway ? "&gateway=true" : ""); diff --git a/cas-client-core/src/test/java/org/jasig/cas/client/util/CommonUtilsTests.java b/cas-client-core/src/test/java/org/jasig/cas/client/util/CommonUtilsTests.java index a75abc2..99cb6e2 100644 --- a/cas-client-core/src/test/java/org/jasig/cas/client/util/CommonUtilsTests.java +++ b/cas-client-core/src/test/java/org/jasig/cas/client/util/CommonUtilsTests.java @@ -19,6 +19,22 @@ import java.util.Collection; */ public final class CommonUtilsTests extends TestCase { + public void testRedirectUrlWithParam() { + final String loginUrl = "http://localhost:8080/login?myName=foo"; + final String fullyConstructedUrl = CommonUtils.constructRedirectUrl(loginUrl, "foo", "foo", false, false); + + int count = 0; + final char[] chars = fullyConstructedUrl.toCharArray(); + + for (int i = 0; i < chars.length; i++) { + if (chars[i] == '?') { + count ++; + } + } + + assertEquals(1, count); + } + public void testAssertNotNull() { final String CONST_MESSAGE = "test"; CommonUtils.assertNotNull(new Object(), CONST_MESSAGE);