diff --git a/samples/jaas-xml/jaas.gradle b/samples/jaas-xml/jaas.gradle
index 1ae4fa558e..f51474c6a2 100644
--- a/samples/jaas-xml/jaas.gradle
+++ b/samples/jaas-xml/jaas.gradle
@@ -26,4 +26,6 @@ dependencies {
jstlDependencies,
"org.slf4j:jcl-over-slf4j:$slf4jVersion",
"ch.qos.logback:logback-classic:$logbackVersion"
+
+ integrationTestCompile gebDependencies
}
\ No newline at end of file
diff --git a/samples/jaas-xml/pom.xml b/samples/jaas-xml/pom.xml
index 5b2179a03f..a616b17d27 100644
--- a/samples/jaas-xml/pom.xml
+++ b/samples/jaas-xml/pom.xml
@@ -154,24 +154,72 @@
4.0.2.RELEASEruntime
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+ test
+ junitjunit4.11test
+
+ org.codehaus.groovy
+ groovy
+ 2.0.5
+ test
+ org.easytestingfest-assert1.4test
+
+ org.gebish
+ geb-spock
+ 0.9.0
+ test
+ org.mockitomockito-core1.9.5test
+
+ org.seleniumhq.selenium
+ selenium-htmlunit-driver
+ 2.33.0
+ test
+
+
+ org.spockframework
+ spock-core
+ 0.7-groovy-2.0
+ test
+
+
+ junit-dep
+ junit
+
+
+
+
+ org.spockframework
+ spock-spring
+ 0.7-groovy-2.0
+ test
+
+
+ junit-dep
+ junit
+
+
+ org.springframeworkspring-test
diff --git a/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/JaasXmlTests.groovy b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/JaasXmlTests.groovy
new file mode 100644
index 0000000000..489036f5f2
--- /dev/null
+++ b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/JaasXmlTests.groovy
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.security.samples
+
+import geb.spock.*
+import spock.lang.Shared
+import spock.lang.Stepwise
+import org.springframework.security.samples.pages.*
+
+/**
+ * Tests the CAS sample application using service tickets.
+ *
+ * @author Rob Winch
+ */
+@Stepwise
+class JaasXmlTests extends GebReportingSpec {
+ def 'access home page with unauthenticated works'() {
+ when: 'Unauthenticated user accesses the Home Page'
+ to HomePage
+ then: 'The home page is displayed'
+ at HomePage
+ }
+
+ def 'access secure page with unauthenticated requires login'() {
+ when: 'Unauthenticated user accesses the Secure Page'
+ securePage LoginPage
+ then: 'The login page is displayed'
+ at LoginPage
+ }
+
+ def 'authenticated user is sent to original page'() {
+ when: 'user authenticates'
+ login()
+ then: 'The secure page is displayed'
+ at SecurePage
+ }
+
+ def 'authenticated user logs out'() {
+ when: 'user logs out'
+ logout()
+ then: 'the default logout success page is displayed'
+ at HomePage
+ when: 'Unauthenticated user accesses the Secure Page'
+ via SecurePage
+ then: 'The login page is displayed'
+ at LoginPage
+ }
+}
\ No newline at end of file
diff --git a/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/HomePage.groovy b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/HomePage.groovy
new file mode 100644
index 0000000000..6d238ed69f
--- /dev/null
+++ b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/HomePage.groovy
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.security.samples.pages;
+
+import geb.*
+
+/**
+ * The home page
+ *
+ * @author Rob Winch
+ */
+class HomePage extends Page {
+ static url = ''
+ static at = { assert driver.title == 'Home Page'; true}
+ static content = {
+ securePage(to: [SecurePage,LoginPage]) { $('a').click() }
+ }
+}
\ No newline at end of file
diff --git a/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/LoginPage.groovy b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/LoginPage.groovy
new file mode 100644
index 0000000000..7966e5c47e
--- /dev/null
+++ b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/LoginPage.groovy
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.security.samples.pages;
+
+import geb.*
+
+/**
+ * The login page.
+ *
+ * @author Rob Winch
+ */
+class LoginPage extends Page {
+ static url = 'login'
+ static at = { assert driver.title == 'Login Page'; true}
+ static content = {
+ login(required:false) { user='user', password='user' ->
+ loginForm.j_username = user
+ loginForm.j_password = password
+ submit.click()
+ }
+ loginForm { $('form') }
+ submit { $('input', type: 'submit') }
+ }
+}
\ No newline at end of file
diff --git a/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/SecurePage.groovy b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/SecurePage.groovy
new file mode 100644
index 0000000000..30d4b358e6
--- /dev/null
+++ b/samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/SecurePage.groovy
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2011 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.springframework.security.samples.pages
+
+import geb.Page
+
+/**
+ * The home page
+ *
+ * @author Rob Winch
+ */
+class SecurePage extends Page {
+ static url = 'secure/'
+ static at = { assert driver.title == 'Security Debug Information'; true}
+ static content = {
+ message { $('p').text() }
+ logout { $('input', type: 'submit').click() }
+ }
+}
\ No newline at end of file
diff --git a/samples/jaas-xml/src/main/webapp/index.jsp b/samples/jaas-xml/src/main/webapp/index.jsp
index 06e2b29ee6..5389880ec1 100644
--- a/samples/jaas-xml/src/main/webapp/index.jsp
+++ b/samples/jaas-xml/src/main/webapp/index.jsp
@@ -2,6 +2,7 @@
<%@ page import="java.security.AccessController" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
+Home Page