You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.8 KiB
129 lines
4.8 KiB
// CAS sample build file |
|
|
|
apply plugin: 'war' |
|
apply plugin: 'jetty' |
|
apply plugin: 'groovy' |
|
|
|
def excludeModules = ['spring-security-acl', 'jsr250-api', 'spring-jdbc', 'spring-tx'] |
|
def jettyVersion = '7.1.6.v20100715' |
|
def keystore = "$rootDir/samples/certificates/server.jks" |
|
def password = 'password' |
|
|
|
configurations { |
|
casServer |
|
excludeModules.each {name -> |
|
runtime.exclude module: name |
|
} |
|
|
|
runtime.exclude group: 'org.aspectj' |
|
|
|
integrationTestCompile.extendsFrom groovy |
|
} |
|
|
|
sourceSets { |
|
test.resources.exclude 'GebConfig.groovy' |
|
integrationTest.groovy.srcDir file('src/integration-test/groovy') |
|
} |
|
|
|
eclipse.classpath.plusConfigurations += configurations.integrationTestRuntime |
|
|
|
dependencies { |
|
groovy 'org.codehaus.groovy:groovy:1.8.7' |
|
|
|
providedCompile 'javax.servlet:servlet-api:2.5@jar' |
|
|
|
compile project(':spring-security-core'), |
|
project(':spring-security-cas-client'), |
|
"org.jasig.cas.client:cas-client-core:3.1.12" |
|
|
|
runtime project(':spring-security-web'), |
|
project(':spring-security-config'), |
|
"org.slf4j:jcl-over-slf4j:$slf4jVersion", |
|
"ch.qos.logback:logback-classic:$logbackVersion" |
|
|
|
integrationTestCompile project(':spring-security-cas-client'), |
|
'org.seleniumhq.selenium:selenium-htmlunit-driver:2.25.0', |
|
'org.spockframework:spock-core:0.6-groovy-1.8', |
|
'org.codehaus.geb:geb-spock:0.7.2', |
|
'commons-httpclient:commons-httpclient:3.1', |
|
"org.eclipse.jetty:jetty-server:$jettyVersion", |
|
"org.eclipse.jetty:jetty-servlet:$jettyVersion" |
|
} |
|
|
|
[jettyRun, jettyRunWar]*.configure { |
|
contextPath = "/cas-sample" |
|
def httpConnector = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.nio.SelectChannelConnector').newInstance() |
|
httpConnector.port = 8080 |
|
httpConnector.confidentialPort = 8443 |
|
def httpsConnector = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector').newInstance() |
|
httpsConnector.port = 8443 |
|
httpsConnector.keystore = httpsConnector.truststore = keystore |
|
httpsConnector.keyPassword = httpsConnector.trustPassword = password |
|
|
|
connectors = [httpConnector, httpsConnector] |
|
doFirst() { |
|
System.setProperty('cas.server.host', casServer().httpsHost) |
|
System.setProperty('cas.service.host', jettyRunWar.httpsHost) |
|
} |
|
} |
|
|
|
task cas (dependsOn: [jettyRunWar]) { |
|
jettyRunWar.dependsOn(':spring-security-samples-casserver:casServer') |
|
} |
|
|
|
task casServer(dependsOn: ':spring-security-samples-casserver:casServer') { |
|
} |
|
|
|
integrationTest.dependsOn cas |
|
integrationTest.doFirst { |
|
def casServiceHost = jettyRunWar.httpsHost |
|
systemProperties['cas.server.host'] = casServer().httpsHost |
|
systemProperties['cas.service.host'] = casServiceHost |
|
systemProperties['geb.build.baseUrl'] = 'https://'+casServiceHost+'/cas-sample/' |
|
systemProperties['geb.build.reportsDir'] = 'build/geb-reports' |
|
systemProperties['jar.path'] = jar.archivePath |
|
systemProperties['javax.net.ssl.trustStore'] = keystore |
|
systemProperties['javax.net.ssl.trustStorePassword'] = password |
|
} |
|
|
|
gradle.taskGraph.whenReady {graph -> |
|
def casServer = casServer() |
|
[casServer,jettyRunWar]*.metaClass*.getHttpsConnector {-> |
|
def sslSocketConnClass = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.security.SslSocketConnector') |
|
delegate.connectors.find { it in sslSocketConnClass } |
|
} |
|
[casServer,jettyRunWar]*.metaClass*.getHttpsHost {-> |
|
"localhost:"+delegate.httpsConnector.port |
|
} |
|
jettyRunWar.metaClass.getHttpConnector {-> |
|
def channelConnClass = jettyRunWar.class.classLoader.loadClass('org.mortbay.jetty.nio.SelectChannelConnector') |
|
delegate.connectors.find { it in channelConnClass } |
|
} |
|
if (graph.hasTask(cas)) { |
|
casServer.daemon = true |
|
} |
|
if(graph.hasTask(integrationTest)) { |
|
tasks.getByPath(':spring-security-samples-casserver:casServerOverlay').logLevel = 'ERROR' |
|
jettyRunWar { |
|
additionalRuntimeJars += file("src/integration-test/resources") |
|
daemon = true |
|
} |
|
|
|
[jettyRunWar.httpConnector,jettyRunWar.httpsConnector,casServer.httpsConnector]*.metaClass*.reservePort { taskToCloseSocket -> |
|
def serverSocket = new ServerSocket(0) |
|
delegate.metaClass.serverSocket = serverSocket |
|
delegate.port = serverSocket.localPort |
|
taskToCloseSocket.doFirst { |
|
serverSocket.close() |
|
} |
|
} |
|
|
|
[jettyRunWar.httpConnector,jettyRunWar.httpsConnector]*.reservePort(jettyRunWar) |
|
jettyRunWar.httpConnector.confidentialPort = jettyRunWar.httpsConnector.port |
|
casServer.httpsConnector.reservePort(casServer) |
|
} |
|
} |
|
|
|
def casServer() { |
|
tasks.getByPath(':spring-security-samples-casserver:casServer') |
|
}
|
|
|