SEC-2630: Add helloworld-jc Gebintegration tests
This commit is contained in:
		
							parent
							
								
									82e89db1c8
								
							
						
					
					
						commit
						15ab3316b3
					
				| 
						 | 
				
			
			@ -3,7 +3,7 @@ apply from: WAR_SAMPLE_GRADLE
 | 
			
		|||
dependencies {
 | 
			
		||||
 | 
			
		||||
    providedCompile "javax.servlet:javax.servlet-api:3.0.1",
 | 
			
		||||
                    'javax.servlet.jsp:jsp-api:2.1'
 | 
			
		||||
            'javax.servlet.jsp:jsp-api:2.1'
 | 
			
		||||
 | 
			
		||||
    compile project(":spring-security-config"),
 | 
			
		||||
            project(":spring-security-web"),
 | 
			
		||||
| 
						 | 
				
			
			@ -11,4 +11,6 @@ dependencies {
 | 
			
		|||
            "org.slf4j:jcl-over-slf4j:$slf4jVersion"
 | 
			
		||||
 | 
			
		||||
    runtime "ch.qos.logback:logback-classic:$logbackVersion"
 | 
			
		||||
 | 
			
		||||
    integrationTestCompile gebDependencies
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -124,24 +124,72 @@
 | 
			
		|||
      <version>0.9.29</version>
 | 
			
		||||
      <scope>runtime</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>commons-httpclient</groupId>
 | 
			
		||||
      <artifactId>commons-httpclient</artifactId>
 | 
			
		||||
      <version>3.1</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>junit</groupId>
 | 
			
		||||
      <artifactId>junit</artifactId>
 | 
			
		||||
      <version>4.11</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.codehaus.groovy</groupId>
 | 
			
		||||
      <artifactId>groovy</artifactId>
 | 
			
		||||
      <version>2.0.5</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.easytesting</groupId>
 | 
			
		||||
      <artifactId>fest-assert</artifactId>
 | 
			
		||||
      <version>1.4</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.gebish</groupId>
 | 
			
		||||
      <artifactId>geb-spock</artifactId>
 | 
			
		||||
      <version>0.9.0</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.mockito</groupId>
 | 
			
		||||
      <artifactId>mockito-core</artifactId>
 | 
			
		||||
      <version>1.9.5</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.seleniumhq.selenium</groupId>
 | 
			
		||||
      <artifactId>selenium-htmlunit-driver</artifactId>
 | 
			
		||||
      <version>2.33.0</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.spockframework</groupId>
 | 
			
		||||
      <artifactId>spock-core</artifactId>
 | 
			
		||||
      <version>0.7-groovy-2.0</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
      <exclusions>
 | 
			
		||||
        <exclusion>
 | 
			
		||||
          <artifactId>junit-dep</artifactId>
 | 
			
		||||
          <groupId>junit</groupId>
 | 
			
		||||
        </exclusion>
 | 
			
		||||
      </exclusions>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.spockframework</groupId>
 | 
			
		||||
      <artifactId>spock-spring</artifactId>
 | 
			
		||||
      <version>0.7-groovy-2.0</version>
 | 
			
		||||
      <scope>test</scope>
 | 
			
		||||
      <exclusions>
 | 
			
		||||
        <exclusion>
 | 
			
		||||
          <artifactId>junit-dep</artifactId>
 | 
			
		||||
          <groupId>junit</groupId>
 | 
			
		||||
        </exclusion>
 | 
			
		||||
      </exclusions>
 | 
			
		||||
    </dependency>
 | 
			
		||||
    <dependency>
 | 
			
		||||
      <groupId>org.springframework</groupId>
 | 
			
		||||
      <artifactId>spring-test</artifactId>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
/*
 | 
			
		||||
 * 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 HelloWorldJcTests extends GebReportingSpec {
 | 
			
		||||
    def 'access home page with unauthenticated user sends to login page'() {
 | 
			
		||||
        when: 'Unauthenticated user accesses the Home Page'
 | 
			
		||||
        via HomePage
 | 
			
		||||
        then: 'The login page is displayed'
 | 
			
		||||
        at LoginPage
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def 'authenticated user is sent to original page'() {
 | 
			
		||||
        when: 'user authenticates'
 | 
			
		||||
        login()
 | 
			
		||||
        then: 'The home page is displayed'
 | 
			
		||||
        at HomePage
 | 
			
		||||
        and: 'The username is displayed'
 | 
			
		||||
        message == 'Hello user'
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    def 'authenticated user logs out'() {
 | 
			
		||||
        when: 'user logs out'
 | 
			
		||||
        logout()
 | 
			
		||||
        then: 'the login page is displayed'
 | 
			
		||||
        at LoginPage
 | 
			
		||||
        when: 'Unauthenticated user accesses the Home Page'
 | 
			
		||||
        via HomePage
 | 
			
		||||
        then: 'The login page is displayed'
 | 
			
		||||
        at LoginPage
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2002-2013 the original author or authors.
 | 
			
		||||
 * 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.
 | 
			
		||||
| 
						 | 
				
			
			@ -13,21 +13,20 @@
 | 
			
		|||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
package org.springframework.security.samples.config;
 | 
			
		||||
package org.springframework.security.samples.pages;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
import org.springframework.test.context.ContextConfiguration;
 | 
			
		||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 | 
			
		||||
import geb.*
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author Rob Winch
 | 
			
		||||
 * The home page
 | 
			
		||||
 *
 | 
			
		||||
 * @author Rob Winch
 | 
			
		||||
 */
 | 
			
		||||
@RunWith(SpringJUnit4ClassRunner.class)
 | 
			
		||||
@ContextConfiguration(classes=SecurityConfig.class)
 | 
			
		||||
public class SecurityConfigTests {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void securityConfigurationLoads() {}
 | 
			
		||||
class HomePage extends Page {
 | 
			
		||||
    static url = ''
 | 
			
		||||
    static at = { assert driver.title == 'Hello Security'; true}
 | 
			
		||||
    static content = {
 | 
			
		||||
        message { $('p').text() }
 | 
			
		||||
        logout { $('input', type: 'submit').click() }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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='password' ->
 | 
			
		||||
            loginForm.username = user
 | 
			
		||||
            loginForm.password = password
 | 
			
		||||
            submit.click()
 | 
			
		||||
        }
 | 
			
		||||
        loginForm { $('form') }
 | 
			
		||||
        submit { $('input', type: 'submit') }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue