From 91b2b7f8759bc499ece825688372dc9708119b46 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Thu, 12 Jun 2014 10:43:24 -0500 Subject: [PATCH] SEC-2634: Add Geb integration tests for jaas-xml --- samples/jaas-xml/jaas.gradle | 2 + samples/jaas-xml/pom.xml | 48 +++++++++++++++ .../security/samples/JaasXmlTests.groovy | 61 +++++++++++++++++++ .../security/samples/pages/HomePage.groovy | 31 ++++++++++ .../security/samples/pages/LoginPage.groovy | 37 +++++++++++ .../security/samples/pages/SecurePage.groovy | 32 ++++++++++ samples/jaas-xml/src/main/webapp/index.jsp | 1 + .../jaas-xml/src/main/webapp/secure/index.jsp | 7 +++ 8 files changed, 219 insertions(+) create mode 100644 samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/JaasXmlTests.groovy create mode 100644 samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/HomePage.groovy create mode 100644 samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/LoginPage.groovy create mode 100644 samples/jaas-xml/src/integration-test/groovy/org/springframework/security/samples/pages/SecurePage.groovy 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.RELEASE runtime + + commons-httpclient + commons-httpclient + 3.1 + test + junit junit 4.11 test + + org.codehaus.groovy + groovy + 2.0.5 + test + org.easytesting fest-assert 1.4 test + + org.gebish + geb-spock + 0.9.0 + test + org.mockito mockito-core 1.9.5 test + + 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.springframework spring-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

Home Page

diff --git a/samples/jaas-xml/src/main/webapp/secure/index.jsp b/samples/jaas-xml/src/main/webapp/secure/index.jsp index 6ddcc61e07..b7601e9685 100644 --- a/samples/jaas-xml/src/main/webapp/secure/index.jsp +++ b/samples/jaas-xml/src/main/webapp/secure/index.jsp @@ -1,3 +1,5 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> <%@ page import="javax.security.auth.Subject" %> <%@ page import="java.security.AccessController" %> <%@ page import="org.springframework.security.core.context.SecurityContextHolder" %> @@ -47,5 +49,10 @@ <% } %> +

" method="post"> + + + +