You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ow...@apache.org on 2014/02/05 22:29:47 UTC

svn commit: r1564939 - in /cxf/fediz/trunk/services/idp: pom.xml src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/ src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java src/test/resources/rest-client.xml

Author: owulff
Date: Wed Feb  5 21:29:47 2014
New Revision: 1564939

URL: http://svn.apache.org/r1564939
Log:
Initial REST integration test

Added:
    cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/
    cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java
    cxf/fediz/trunk/services/idp/src/test/resources/rest-client.xml
Modified:
    cxf/fediz/trunk/services/idp/pom.xml

Modified: cxf/fediz/trunk/services/idp/pom.xml
URL: http://svn.apache.org/viewvc/cxf/fediz/trunk/services/idp/pom.xml?rev=1564939&r1=1564938&r2=1564939&view=diff
==============================================================================
--- cxf/fediz/trunk/services/idp/pom.xml (original)
+++ cxf/fediz/trunk/services/idp/pom.xml Wed Feb  5 21:29:47 2014
@@ -115,7 +115,7 @@
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-log4j12</artifactId>
 			<version>${slf4j.version}</version>
-		</dependency>
+		</dependency>		
 		<dependency>
 			<groupId>org.apache.cxf</groupId>
 			<artifactId>cxf-rt-ws-security</artifactId>
@@ -179,6 +179,16 @@
 			<artifactId>openjpa-all</artifactId>
 			<version>2.2.2</version>
 		</dependency>
+		
+        
+        <dependency>
+			  <groupId>org.apache.cxf</groupId>
+			  <artifactId>cxf-rt-rs-client</artifactId>
+			  <version>${cxf.version}</version>
+			  <scope>test</scope>
+			</dependency>
+			
+
 	</dependencies>
 	<build>
 		<resources>
@@ -261,11 +271,30 @@
 					</webResources>
 				</configuration>
 			</plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>reserve-network-port</id>
+                        <goals>
+                            <goal>reserve-network-port</goal>
+                        </goals>
+                        <phase>initialize</phase>
+                        <configuration>
+                            <portNames>
+                                <portName>idp.https.port</portName>
+                            </portNames>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>			
 			<plugin>
 				<groupId>org.codehaus.mojo</groupId>
 				<artifactId>properties-maven-plugin</artifactId>
 				<executions>
 					<execution>
+					    <id>set-tomcat-properties</id>
 						<goals>
 							<goal>set-system-properties</goal>
 						</goals>
@@ -277,7 +306,7 @@
 								</property>
 							</properties>
 						</configuration>
-					</execution>
+					</execution>					
 				</executions>
 			</plugin>
 			<plugin>
@@ -285,6 +314,12 @@
 				<artifactId>jetty-maven-plugin</artifactId>
 				<version>${jetty.version}</version>
 				<configuration>
+				    <!-- 
+				    <webAppSourceDirectory>${basedir}/target/fediz-idp/</webAppSourceDirectory>
+				    <classesDirectory>${basedir}/target/fediz-idp/WEB-INF/classes</classesDirectory>
+				     -->
+				    <stopPort>8005</stopPort>
+                    <stopKey>STOP</stopKey>
 					<connectors>
 						<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
 							<port>${idp.http.port}</port>
@@ -294,23 +329,43 @@
 							implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
 							<port>${idp.https.port}</port>
 							<maxIdleTime>30000</maxIdleTime>
-							<keystore>../../examples/samplekeys/idp-ssl-server.jks</keystore>
+							<keystore>${basedir}/../../examples/samplekeys/idp-ssl-server.jks</keystore>
 							<keyPassword>tompass</keyPassword>
 							<password>tompass</password>
 						</connector>
 					</connectors>
 					<contextHandlers>
 						<contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
-							<war>target/fediz-idp.war</war>
+							<war>${basedir}/target/fediz-idp.war</war>
 							<contextPath>/fediz-idp</contextPath>
 						</contextHandler>
                         <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
-                            <war>target/fediz-idp-sts.war</war>
+                            <war>${basedir}/target/fediz-idp-sts.war</war>
                             <contextPath>/fediz-idp-sts</contextPath>
                             <throwUnavailableOnStartupException>false</throwUnavailableOnStartupException>
                         </contextHandler>						
 					</contextHandlers>
 				</configuration>
+				<executions>
+					<execution>
+					  <id>start-jetty</id>
+					  <phase>pre-integration-test</phase>
+					  <goals>
+					    <goal>run-war</goal>
+					  </goals>
+					  <configuration>
+					    <scanIntervalSeconds>0</scanIntervalSeconds>
+					    <daemon>true</daemon>
+					  </configuration>
+					</execution>
+					<execution>
+					  <id>stop-jetty</id>
+					  <phase>post-integration-test</phase>
+					  <goals>
+					    <goal>stop</goal>
+					  </goals>
+					</execution>
+		        </executions>
 				<dependencies>
 					<dependency>
 						<groupId>hsqldb</groupId>
@@ -319,6 +374,46 @@
 					</dependency>
 				</dependencies>
 			</plugin>
+			<plugin>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <inherited>true</inherited>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>integration-test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>false</skip>
+                            <systemPropertyVariables>
+                                <idp.https.port>${idp.https.port}</idp.https.port>
+                            </systemPropertyVariables>
+                            <includes>
+                                <include>**/integrationtests/**</include>
+                            </includes>
+                            <argLine>-XX:MaxPermSize=512M</argLine>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>verify</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <inherited>true</inherited>
+                <configuration>
+                    <excludes>
+                        <exclude>**/integrationtests/**</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>            
 		</plugins>
 		<!-- Name of the generated WAR file -->
 		<finalName>fediz-idp</finalName>

Added: cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java
URL: http://svn.apache.org/viewvc/cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java?rev=1564939&view=auto
==============================================================================
--- cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java (added)
+++ cxf/fediz/trunk/services/idp/src/test/java/org/apache/cxf/fediz/service/idp/integrationtests/RestITTest.java Wed Feb  5 21:29:47 2014
@@ -0,0 +1,116 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.cxf.fediz.service.idp.integrationtests;
+
+import java.net.URL;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.fediz.service.idp.domain.Idp;
+import org.apache.cxf.fediz.service.idp.rest.Idps;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RestITTest {
+        
+    private static String idpHttpsPort;
+    private static Bus bus;
+
+
+    @BeforeClass
+    public static void init() {
+        System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
+        System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
+        System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.springframework.webflow", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.springframework.security.web", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.springframework.security", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.cxf.fediz", "info");
+        System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.cxf", "info");
+
+        idpHttpsPort = System.getProperty("idp.https.port");
+        Assert.assertNotNull("Property 'idp.https.port' null", idpHttpsPort);
+
+        SpringBusFactory bf = new SpringBusFactory();
+        
+        URL busFile = RestITTest.class.getResource("/rest-client.xml");
+        bus = bf.createBus(busFile.toString());
+        SpringBusFactory.setDefaultBus(bus);
+        SpringBusFactory.setThreadDefaultBus(bus);
+        
+    }
+    
+    @AfterClass
+    public static void cleanup() {
+        if (bus != null) {
+            bus.shutdown(true);
+        }
+    }
+    
+    @Test
+    public void testGetAllIdps() {
+        String address = "https://localhost:" + idpHttpsPort + "/fediz-idp/services/rs";
+        Client client = ClientBuilder.newClient();
+        Idps idps = client.target(address).path("idps")
+            .request("application/xml").get(Idps.class);
+        Assert.assertEquals(1L, idps.getIdps().size());
+        
+        Idp idp = idps.getIdps().iterator().next();
+        Assert.assertEquals("Certificate doesn't match",
+                            "stsKeystoreA.properties", idp.getCertificate());
+        Assert.assertEquals("Certificate password doesn't match",
+                            "realma", idp.getCertificatePassword());
+        Assert.assertEquals("Realm doesn't match",
+                            "urn:org:apache:cxf:fediz:idp:realm-A", idp.getRealm());
+        Assert.assertEquals("ServiceDescription doesn't match",
+                            "IDP of Realm A", idp.getServiceDescription());
+        Assert.assertEquals("ServiceDisplayName doesn't match",
+                            "REALM A", idp.getServiceDisplayName());
+        Assert.assertEquals("IdpUrl doesn't match",
+                            "https://localhost:9443/fediz-idp/federation", idp.getIdpUrl());
+        Assert.assertEquals("StsUrl doesn't match",
+                            "https://localhost:9443/fediz-idp-sts/REALMA", idp.getStsUrl());
+        Assert.assertEquals("Uri doesn't match",
+                            "realma", idp.getUri());
+        Assert.assertTrue("ProvideIDPList doesn't match", idp.isProvideIDPList());
+        Assert.assertTrue("UseCurrentIDP doesn't match", idp.isUseCurrentIDP());
+        Assert.assertEquals("Number of AuthenticationURIs doesn't match",
+                            1, idp.getAuthenticationURIs().size());
+        Assert.assertEquals("Number of SupportedProtocols doesn't match",
+                            2, idp.getSupportedProtocols().size());
+        Assert.assertEquals("Number of TokenTypesOffered doesn't match",
+                            2, idp.getTokenTypesOffered().size());
+        Assert.assertEquals("Number of applications doesn't match",
+                            1, idp.getApplications().size());
+        Assert.assertEquals("Number of trusted IDPs doesn't match",
+                            1, idp.getTrustedIdps().size());
+        Assert.assertEquals("Number of claims doesn't match",
+                            4, idp.getClaimTypesOffered().size());
+        
+    }
+
+    
+    
+}

Added: cxf/fediz/trunk/services/idp/src/test/resources/rest-client.xml
URL: http://svn.apache.org/viewvc/cxf/fediz/trunk/services/idp/src/test/resources/rest-client.xml?rev=1564939&view=auto
==============================================================================
--- cxf/fediz/trunk/services/idp/src/test/resources/rest-client.xml (added)
+++ cxf/fediz/trunk/services/idp/src/test/resources/rest-client.xml Wed Feb  5 21:29:47 2014
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:http="http://cxf.apache.org/transports/http/configuration" xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration" xmlns:sec="http://cxf.apache.org/configuration/security" xsi:schemaLocation="         http://www.springframework.org/schema/beans                 http://www.springframework.org/schema/beans/spring-beans.xsd         http://cxf.apache.org/transports/http/configuration         http://cxf.apache.org/schemas/configuration/http-conf.xsd         http://cxf.apache.org/transports/http-jetty/configuration   http://cxf.apache.org/schemas/configuration/http-jetty.xsd         http://cxf.apache.org/configuration/security                http://cxf.apache.org/schemas/configuration/security.xsd         ">
+    <!-- -->
+    <!-- HTTP/S configuration for web clients -->
+    <!-- -->
+    <http:conduit name="\{https://localhost\:.*\}WebClient\.http-conduit">
+        <http:client ConnectionTimeout="3000000" ReceiveTimeout="3000000"/>
+        <http:tlsClientParameters disableCNCheck="true">
+            <sec:trustManagers>
+                <sec:keyStore type="JKS" password="tompass" file="../../examples/samplekeys/idp-ssl-server.jks"/>
+            </sec:trustManagers>
+        </http:tlsClientParameters>
+    </http:conduit>
+</beans>