/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.cas;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import javax.servlet.http.HttpServletRequest;
import com.globant.katari.cas.CasServicesUrlBuilder;
import com.globant.katari.cas.UrlTransformer;
import junit.framework.TestCase;
/* Tests the cas service builder.
*/
public class ServicesUrlBuilderTest extends TestCase {
/* Tests the services url when the cas server is deployed in the same
* container as the aplication.
*/
public final void testGetLocalCasServices() {
HttpServletRequest request = createMock(HttpServletRequest.class);
expect(request.getScheme()).andStubReturn("http");
expect(request.getServerName()).andStubReturn("localhost");
expect(request.getServerPort()).andStubReturn(80);
expect(request.getContextPath()).andStubReturn("/katari-web");
replay(request);
CasServicesUrlBuilder builder;
UrlTransformer webToCas = new UrlTransformer(null, null, "^(.*)web$",
"$1cas");
builder = new CasServicesUrlBuilder(webToCas, webToCas, "service", "login",
"validator");
assertEquals("http://localhost:80/katari-web/service",
builder.buildServiceUrl(request));
assertEquals("http://localhost:80/katari-cas/login",
builder.buildLoginUrl(request));
assertEquals("http://localhost:80/katari-cas/validator",
builder.buildCasValidatorUrl(request));
}
/* Tests the services url when the cas server is deployed in a container
* listening in the previous port as the aplication.
*/
public final void testGetPreviousPortServices() {
HttpServletRequest request = createMock(HttpServletRequest.class);
expect(request.getScheme()).andStubReturn("http");
expect(request.getServerName()).andStubReturn("localhost");
expect(request.getServerPort()).andStubReturn(81);
expect(request.getContextPath()).andStubReturn("/katari-source");
replay(request);
CasServicesUrlBuilder builder;
UrlTransformer portMinus1 = new UrlTransformer(null, "-1", "^(.*)source$",
"$1web");
builder = new CasServicesUrlBuilder(portMinus1, portMinus1, "service",
"login", "validator");
assertEquals("http://localhost:81/katari-source/service",
builder.buildServiceUrl(request));
assertEquals("http://localhost:80/katari-web/login",
builder.buildLoginUrl(request));
assertEquals("http://localhost:80/katari-web/validator",
builder.buildCasValidatorUrl(request));
}
/* Tests the services url when the cas server is deployed in a container
* listening in the previous port as the aplication as specified in a system
* property.
*/
public final void testGetPreviousPortFromPropertyServices() {
HttpServletRequest request = createMock(HttpServletRequest.class);
expect(request.getScheme()).andStubReturn("http");
expect(request.getServerName()).andStubReturn("localhost");
expect(request.getServerPort()).andStubReturn(82);
expect(request.getContextPath()).andStubReturn("/katari-source");
replay(request);
CasServicesUrlBuilder builder;
String previous = System.setProperty("cas.test.prop", "-2");
UrlTransformer portProperty = new UrlTransformer(null, "cas.test.prop",
"^(.*)source$", "$1web");
builder = new CasServicesUrlBuilder(portProperty, portProperty, "service",
"login", "validator");
assertEquals("http://localhost:82/katari-source/service",
builder.buildServiceUrl(request));
assertEquals("http://localhost:80/katari-web/login",
builder.buildLoginUrl(request));
assertEquals("http://localhost:80/katari-web/validator",
builder.buildCasValidatorUrl(request));
if (previous != null) {
System.setProperty("cas.test.prop", previous);
}
}
/* Tests the services url when the cas server is deployed in a container
* listening in a different host name.
*/
public final void testTransformServerName() {
HttpServletRequest request = createMock(HttpServletRequest.class);
expect(request.getScheme()).andStubReturn("http");
expect(request.getServerName()).andStubReturn("localhost");
expect(request.getServerPort()).andStubReturn(82);
expect(request.getContextPath()).andStubReturn("/katari-source");
replay(request);
CasServicesUrlBuilder builder;
UrlTransformer newServer = new UrlTransformer("127.0.0.1", null,
"^(.*)source$", "$1web");
builder = new CasServicesUrlBuilder(newServer, newServer, "service",
"login", "validator");
assertEquals("http://localhost:82/katari-source/service",
builder.buildServiceUrl(request));
assertEquals("http://127.0.0.1:82/katari-web/login",
builder.buildLoginUrl(request));
assertEquals("http://127.0.0.1:82/katari-web/validator",
builder.buildCasValidatorUrl(request));
}
}