Author: owulff
Date: Thu Nov 29 13:19:07 2012
New Revision: 1415156

URL: http://svn.apache.org/viewvc?rev=1415156&view=rev
Log:
Finished unit test with idp/sts in embedded jetty as well as fedizhelloworld

Added:
    cxf/fediz/trunk/plugins/jetty/src/test/resources/idpserver.xml
Modified:
    cxf/fediz/trunk/plugins/jetty/pom.xml
    
cxf/fediz/trunk/plugins/jetty/src/test/java/org/apache/cxf/fediz/jetty/BrowserTest.java

Modified: cxf/fediz/trunk/plugins/jetty/pom.xml
URL: 
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/jetty/pom.xml?rev=1415156&r1=1415155&r2=1415156&view=diff
==============================================================================
--- cxf/fediz/trunk/plugins/jetty/pom.xml (original)
+++ cxf/fediz/trunk/plugins/jetty/pom.xml Thu Nov 29 13:19:07 2012
@@ -21,13 +21,11 @@
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-server</artifactId>
                        <version>${jetty.version}</version>
-                       <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-security</artifactId>
                        <version>${jetty.version}</version>
-                       <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>org.eclipse.jetty</groupId>
@@ -39,6 +37,12 @@
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>jetty-webapp</artifactId>
                        <version>${jetty.version}</version>
+                       <scope>test</scope>                     
+               </dependency>
+               <dependency>
+                       <groupId>org.eclipse.jetty</groupId>
+                       <artifactId>jetty-jsp</artifactId>
+                       <version>${jetty.version}</version>
                        <scope>test</scope>
                </dependency>
                <dependency>
@@ -60,6 +64,41 @@
                        <version>4.2.2</version>
                        <scope>test</scope>
                </dependency>
+               <dependency>
+                       <groupId>net.htmlparser.jericho</groupId>
+                       <artifactId>jericho-html</artifactId>
+                       <version>3.2</version>
+                       <scope>test</scope>
+               </dependency>
+               
+<!-- 
+               <dependency>
+                       <groupId>javax.servlet.jsp</groupId>
+                       <artifactId>jsp-api</artifactId>
+                       <version>2.2.1-b03</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.glassfish.web</groupId>
+                       <artifactId>jsp-impl</artifactId>
+                       <version>2.2.2-b06</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.geronimo.ext.tomcat</groupId>
+                       <artifactId>jasper-el</artifactId>
+                       <version>7.0.19.2</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.geronimo.bundles</groupId>
+                       <artifactId>jstl</artifactId>
+                       <version>1.2_1</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.geronimo.specs</groupId>
+                       <artifactId>geronimo-servlet_3.0_spec</artifactId>
+                       <version>1.0</version>
+               </dependency>
+ -->
+ 
        </dependencies>
 
        <build>
@@ -83,32 +122,69 @@
                                        </execution>
                                </executions>
                        </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.3.4</version>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Implementation-Title>Apache CXF 
Fediz</Implementation-Title>
-                        <Implementation-Vendor>The Apache Software 
Foundation</Implementation-Vendor>
-                        
<Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
-                        
<Implementation-Version>${project.version}</Implementation-Version>
-                        <Specification-Title>Apache CXF 
Fediz</Specification-Title>
-                        <Specification-Vendor>The Apache Software 
Foundation</Specification-Vendor>
-                        
<Specification-Version>${project.version}</Specification-Version>
+                       <plugin>
+                               <groupId>org.apache.felix</groupId>
+                               <artifactId>maven-bundle-plugin</artifactId>
+                               <version>2.3.4</version>
+                               <extensions>true</extensions>
+                               <configuration>
+                                       <instructions>
+                                               <Implementation-Title>Apache 
CXF Fediz</Implementation-Title>
+                                               <Implementation-Vendor>The 
Apache Software Foundation</Implementation-Vendor>
+                                               
<Implementation-Vendor-Id>org.apache</Implementation-Vendor-Id>
+                                               
<Implementation-Version>${project.version}</Implementation-Version>
+                                               <Specification-Title>Apache CXF 
Fediz</Specification-Title>
+                                               <Specification-Vendor>The 
Apache Software Foundation</Specification-Vendor>
+                                               
<Specification-Version>${project.version}</Specification-Version>
 
-                        <Export-Package>
-                              
org.apache.cxf.fediz.jetty.*;version="${project.version}"
+                                               <Export-Package>
+                                                       
org.apache.cxf.fediz.jetty.*;version="${project.version}"
                         </Export-Package>
-                        <Import-Package>
-                              !org.apache.cxf.fediz.jetty*,
-                              org.apache.cxf.fediz.core.*,
-                              *;resolution:=optional
+                                               <Import-Package>
+                                                       
!org.apache.cxf.fediz.jetty*,
+                                                       
org.apache.cxf.fediz.core.*,
+                                                       *;resolution:=optional
                         </Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>                  
+                                       </instructions>
+                               </configuration>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-dependency-plugin</artifactId>
+                               <version>2.1</version>
+                               <executions>
+                                       <execution>
+                                               <id>copy-idp-sts</id>
+                                               
<phase>generate-resources</phase>
+                                               <goals>
+                                                       <goal>copy</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <artifactItems>
+                                                               <artifactItem>
+                                                                       
<groupId>org.apache.cxf.fediz</groupId>
+                                                                       
<artifactId>fediz-idp</artifactId>
+                                                                       
<version>${project.version}</version>
+                                                                       
<type>war</type>
+                                                                       
<overWrite>true</overWrite>
+                                                               </artifactItem>
+                                                               <artifactItem>
+                                                                       
<groupId>org.apache.cxf.fediz</groupId>
+                                                                       
<artifactId>fediz-idp-sts</artifactId>
+                                                                       
<version>${project.version}</version>
+                                                                       
<type>war</type>
+                                                                       
<overWrite>true</overWrite>
+                                                               </artifactItem> 
                                                        
+                                                       </artifactItems>
+                                                       
<outputAbsoluteArtifactFilename>true</outputAbsoluteArtifactFilename>
+                                                       
<outputDirectory>target</outputDirectory>
+                                                       
<overWriteSnapshots>true</overWriteSnapshots>
+                                                       
<overWriteIfNewer>true</overWriteIfNewer>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+
                </plugins>
        </build>
 

Modified: 
cxf/fediz/trunk/plugins/jetty/src/test/java/org/apache/cxf/fediz/jetty/BrowserTest.java
URL: 
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/jetty/src/test/java/org/apache/cxf/fediz/jetty/BrowserTest.java?rev=1415156&r1=1415155&r2=1415156&view=diff
==============================================================================
--- 
cxf/fediz/trunk/plugins/jetty/src/test/java/org/apache/cxf/fediz/jetty/BrowserTest.java
 (original)
+++ 
cxf/fediz/trunk/plugins/jetty/src/test/java/org/apache/cxf/fediz/jetty/BrowserTest.java
 Thu Nov 29 13:19:07 2012
@@ -22,23 +22,35 @@ package org.apache.cxf.fediz.jetty;
 import java.io.File;
 import java.io.FileInputStream;
 import java.security.KeyStore;
+import java.util.ArrayList;
+import java.util.List;
 
+import net.htmlparser.jericho.FormField;
+import net.htmlparser.jericho.FormFields;
+import net.htmlparser.jericho.Source;
 
+
+import org.apache.http.Consts;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
 import org.apache.http.conn.scheme.Scheme;
 import org.apache.http.conn.ssl.SSLSocketFactory;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.LaxRedirectStrategy;
+import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.util.EntityUtils;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.xml.XmlConfiguration;
 import org.junit.AfterClass;
+import org.junit.Assert;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 
 
 public class BrowserTest {
@@ -47,9 +59,20 @@ public class BrowserTest {
 
     
     @BeforeClass
-    public static void init() {        
+    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", 
"debug");
+
+        
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
 "debug");
+        initIdp();
+        initWebApp();
+    }
+    
+    private static void initWebApp() {
         try {
-            //Resource testServerConfig = 
Resource.newSystemResource("testserver.xml");
             Resource testServerConfig = 
Resource.newSystemResource("fedserver.xml");
             XmlConfiguration configuration = new 
XmlConfiguration(testServerConfig.getInputStream());
             server = (Server)configuration.configure();   
@@ -59,6 +82,17 @@ public class BrowserTest {
         }
     }
     
+    private static void initIdp() {
+        try {
+            Resource testServerConfig = 
Resource.newSystemResource("idpserver.xml");
+            XmlConfiguration configuration = new 
XmlConfiguration(testServerConfig.getInputStream());
+            server = (Server)configuration.configure();
+            server.start();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
     @org.junit.Test
     public void testStart() throws Exception {
         System.out.println(System.getProperty("jetty.home"));
@@ -68,14 +102,14 @@ public class BrowserTest {
     
     //Ignore still IDP/STS is mocked also
     @org.junit.Test
-    @Ignore
     public void testGetSecureUrl() throws Exception {
         String uri = "http://localhost:8080/fedizhelloworld/secure/fedservlet";;
         DefaultHttpClient httpclient = new DefaultHttpClient();
+        String user = "alice";
         try {
             httpclient.getCredentialsProvider().setCredentials(
                     new AuthScope("localhost", 9443),
-                    new UsernamePasswordCredentials("alice", "ecila"));
+                    new UsernamePasswordCredentials(user, "ecila"));
 
             KeyStore trustStore  = 
KeyStore.getInstance(KeyStore.getDefaultType());
             FileInputStream instream = new FileInputStream(new 
File("./target/test-classes/tomcat-idp.jks"));
@@ -95,16 +129,51 @@ public class BrowserTest {
             
             HttpGet httpget = new HttpGet(uri);
 
-            System.out.println("executing request" + httpget.getRequestLine());
+            //System.out.println("executing request " + 
httpget.getRequestLine());
             HttpResponse response = httpclient.execute(httpget);
             HttpEntity entity = response.getEntity();
 
-            System.out.println("----------------------------------------");
-            System.out.println(response.getStatusLine());
-            if (entity != null) {
-                System.out.println("Response content length: " + 
entity.getContentLength());
+            //System.out.println("----------------------------------------");
+            //System.out.println(response.getStatusLine());
+            //if (entity != null) {
+            //    System.out.println("Response content length: " + 
entity.getContentLength());
+            //}
+            
+//            Redirect to a POST is not supported without user interaction
+//            http://www.ietf.org/rfc/rfc2616.txt
+//            If the 301 status code is received in response to a request other
+//            than GET or HEAD, the user agent MUST NOT automatically redirect 
the
+//            request unless it can be confirmed by the user, since this might
+//            change the conditions under which the request was issued.
+            
+            httpclient.setRedirectStrategy(new LaxRedirectStrategy());
+            HttpPost httppost = new HttpPost(uri);
+ 
+            Source source = new Source(EntityUtils.toString(entity));
+            List <NameValuePair> nvps = new ArrayList <NameValuePair>();
+            FormFields formFields = source.getFormFields();
+            Assert.assertNotNull("Form field 'wa' not found", 
formFields.get("wa"));
+            Assert.assertNotNull("Form field 'wresult' not found", 
formFields.get("wresult"));
+            for (FormField formField : formFields) {
+                nvps.add(new BasicNameValuePair(formField.getName(), 
formField.getValues().get(0)));
             }
-            EntityUtils.consume(entity);
+            httppost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
+
+            response = httpclient.execute(httppost);
+            entity = response.getEntity();
+            //System.out.println("----------------------------------------");
+            //System.out.println(response.getStatusLine());
+            //if (entity != null) {
+            //    System.out.println("Response content length: " + 
entity.getContentLength());
+            //}
+            
+            String responseContent = EntityUtils.toString(entity);
+            
+            Assert.assertTrue("Principal not alice", 
responseContent.indexOf("Principal: " + user) > 0);
+            //Has role 'Admin': no<p>
+            //Has role 'Manager': no<p>
+            //Has role 'User': no<p>
+            
         } finally {
             // When HttpClient instance is no longer needed,
             // shut down the connection manager to ensure

Added: cxf/fediz/trunk/plugins/jetty/src/test/resources/idpserver.xml
URL: 
http://svn.apache.org/viewvc/cxf/fediz/trunk/plugins/jetty/src/test/resources/idpserver.xml?rev=1415156&view=auto
==============================================================================
--- cxf/fediz/trunk/plugins/jetty/src/test/resources/idpserver.xml (added)
+++ cxf/fediz/trunk/plugins/jetty/src/test/resources/idpserver.xml Thu Nov 29 
13:19:07 2012
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" 
"http://www.eclipse.org/jetty/configure.dtd";>
+ 
+<Configure id="IdpServer" class="org.eclipse.jetty.server.Server">
+ 
+       <Call class="org.eclipse.jetty.util.log.Log" name="getRootLogger">
+         <Call name="setDebugEnabled">
+           <Arg type="boolean">true</Arg>
+         </Call>
+       </Call>
+
+    <Call name="addConnector">
+      <Arg>
+          <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
+            <Set name="port">9080</Set>
+          </New>
+      </Arg>
+    </Call>
+    
+    <Call name="addConnector">
+     <Arg>
+       <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
+         <Arg>
+           <New class="org.eclipse.jetty.http.ssl.SslContextFactory">
+             <Set name="keyStore">./target/test-classes/tomcat-idp.jks</Set>
+             <Set name="keyStorePassword">tompass</Set>
+             <Set name="keyManagerPassword">tompass</Set>
+           </New>
+         </Arg>
+         <Set name="port">9443</Set>
+         <Set name="maxIdleTime">30000</Set>
+       </New>
+     </Arg>
+   </Call>
+ 
+    <Set name="handler">
+      <New class="org.eclipse.jetty.server.handler.HandlerList">
+        <Set name="handlers">
+                 <Array type="org.eclipse.jetty.server.Handler">
+                   <Item>
+                     <New class="org.eclipse.jetty.webapp.WebAppContext">
+                   <Set name="contextPath">/fedizidp</Set>
+                   <Set name="war">./target/fediz-idp-1.1.0-SNAPSHOT.war</Set>
+                   <Set name="throwUnavailableOnStartupException">true</Set>
+                   <!--<Set 
name="defaultsDescriptor">./target/test-classes/webdefault.xml</Set>-->
+                 </New>
+               </Item>
+               <Item>
+                     <New class="org.eclipse.jetty.webapp.WebAppContext">
+                   <Set name="contextPath">/fedizidpsts</Set>
+                   <Set 
name="war">./target/fediz-idp-sts-1.1.0-SNAPSHOT.war</Set>
+                   <Set name="throwUnavailableOnStartupException">true</Set>
+                 </New>                  
+                   </Item>
+                 </Array>
+        </Set>
+      </New>
+    </Set>    
+    
+</Configure>
\ No newline at end of file


Reply via email to