You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by ul...@apache.org on 2010/03/26 20:33:00 UTC

svn commit: r928029 - in /tapestry/tapestry5/trunk: tapestry-core/src/test/conf/ff_profile_template/ tapestry-core/src/test/java/org/apache/tapestry5/integration/ tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ tapestry-core/src/test...

Author: uli
Date: Fri Mar 26 19:33:00 2010
New Revision: 928029

URL: http://svn.apache.org/viewvc?rev=928029&view=rev
Log:
make the secure access integration test work.

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/
    tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert8.db   (with props)
    tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
    tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
    tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java
    tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert8.db
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert8.db?rev=928029&view=auto
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert8.db
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt?rev=928029&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt Fri Mar 26 19:33:00 2010
@@ -0,0 +1,3 @@
+# PSM Certificate Override Settings file
+# This is a generated file!  Do not edit.
+localhost:8443	OID.2.16.840.1.101.3.4.2.1	AC:9D:B3:A8:70:15:50:D6:51:69:4D:48:70:00:91:53:88:44:A5:EB:12:23:EC:2D:E1:87:40:88:5B:55:E8:26	MUT	AAAAAAAAAAAAAAAEAAAAkknlCnYwgY8xCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZP  cmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMSMwIQYDVQQKExpBcGFjaGUgU29mdHdh  cmUgRm91bmRhdGlvbjEYMBYGA1UECxMPQXBhY2hlIFRhcGVzdHJ5MR0wGwYDVQQD  ExRIb3dhcmQgTS4gTGV3aXMgU2hpcA==

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java Fri Mar 26 19:33:00 2010
@@ -14,9 +14,7 @@
 
 package org.apache.tapestry5.integration;
 
-import org.apache.tapestry5.test.JettyRunner;
-
-import java.io.File;
+import org.apache.tapestry5.test.Jetty7Runner;
 
 /**
  * A "shim" to run Demo App #1 inside IntelliJ.  I still haven't found a way to get IntelliJ to export test classes and
@@ -24,13 +22,11 @@ import java.io.File;
  */
 public class RunJetty
 {
-    public static void main(String[] args) throws InterruptedException
+    public static void main(String[] args) throws Exception
     {
         String contextName = args[0];
         String path = args[1];
-
-        File workingDir = new File(System.getProperty("user.dir"));
-
-        new JettyRunner(workingDir, contextName, 8080, path);
+        
+        new Jetty7Runner(path, contextName, 9090, 8443);
     }
 }

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java Fri Mar 26 19:33:00 2010
@@ -1314,20 +1314,11 @@ public class CoreBehaviorsTests extends 
 
         // assertSourcePresent("<![CDATA[< & >]]>");
     }
-
-    /**
-     * This may need to be disabled or dropped from the test suite, I don't know
-     * that Selenium, especially Selenium
-     * running headless on the CI server, can handle the transition to HTTPS:
-     * there's warnings that pop up about
-     * certificates.
-     * <p/>
-     * Verified: Selenium can't handle this, even with a user manually OK-ing the certificate warning dialogs.
-     */
-    @Test(enabled = false)
+    
+    @Test
     public void secure_page_access()
     {
-        start("Secure Page Demo");
+        clickThru("Secure Page Demo");
 
         assertText("secure", "secure");
 
@@ -1348,7 +1339,7 @@ public class CoreBehaviorsTests extends 
 
         // Back to the insecure home page.
 
-        assertText("//h1", "Tapestry 5 Integration Application 1");
+        assertText("//h1", "Tapestry Integration Test Application");
     }
 
     /** TAP5-815 */

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java Fri Mar 26 19:33:00 2010
@@ -1,4 +1,4 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
+// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,6 +14,18 @@
 
 package org.apache.tapestry5.integration.app1.services;
 
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.io.IOException;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.integration.app1.data.ToDoItem;
@@ -24,23 +36,17 @@ import org.apache.tapestry5.ioc.MappedCo
 import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.test.JettyRunner;
+import org.apache.tapestry5.services.AliasContribution;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ComponentClassTransformWorker;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.ValueEncoderFactory;
 import org.slf4j.Logger;
 
-import java.io.IOException;
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
 /**
  * I was just dying to see how fast requests are!
  */
@@ -75,7 +81,7 @@ public class AppModule
 
                 // This is all a bit jury-rigged together. This is for running the app
                 // interactively; Selenium doesn't seem to handle the transition to https.
-                int port = secure ? JettyRunner.DEFAULT_SECURE_PORT : JettyRunner.DEFAULT_PORT;
+                int port = secure ? 8443 : 9090;
 
                 return String.format("%s://localhost:%d", protocol, port);
             }

Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java (original)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java Fri Mar 26 19:33:00 2010
@@ -17,6 +17,7 @@ package org.apache.tapestry5.test;
 import java.io.File;
 
 import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
 import org.eclipse.jetty.webapp.WebAppContext;
 
 /**
@@ -29,14 +30,18 @@ public class Jetty7Runner
     private final String description;
 
     private final int port;
+    
+    private final int sslPort;
 
-    public Jetty7Runner(String webappFolder, String contextPath, int port) throws Exception
+    public Jetty7Runner(String webappFolder, String contextPath, int port, int sslPort) throws Exception
     {
         this.port = port;
+        
+        this.sslPort = sslPort;
 
         String expandedPath = expand(webappFolder);
 
-        description = String.format("<Jetty7Runner: %s:%s (%s)", contextPath, port, expandedPath);
+        description = String.format("<Jetty7Runner: %s:%s/%s (%s)", contextPath, port, sslPort, expandedPath);
 
         jettyServer = new Server(port);
 
@@ -44,7 +49,21 @@ public class Jetty7Runner
         webapp.setContextPath(contextPath);
         webapp.setWar(expandedPath);
 
-        // TODO: SSL support
+        // SSL support
+        
+        SslSelectChannelConnector sslConnector = new SslSelectChannelConnector();
+        
+        sslConnector.setPort(sslPort);
+        
+        File keystoreFile = new File(TapestryTestConstants.MODULE_BASE_DIR, "src/test/conf/keystore");
+        
+        sslConnector.setKeystore(keystoreFile.getPath());
+        
+        sslConnector.setPassword("tapestry");
+        
+        sslConnector.setKeyPassword("tapestry");
+        
+        jettyServer.addConnector(sslConnector);
 
         jettyServer.setHandler(webapp);
 
@@ -54,7 +73,7 @@ public class Jetty7Runner
     /** Immediately shuts down the server instance. */
     public void stop()
     {
-        System.out.printf("Stopping Jetty instance on port %d\n", port);
+        System.out.printf("Stopping Jetty instance on port %d/%d\n", port, sslPort);
 
         try
         {

Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java (original)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java Fri Mar 26 19:33:00 2010
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.test;
 
+import java.io.File;
 import java.util.Map;
 
 import org.openqa.selenium.server.RemoteControlConfiguration;
@@ -104,6 +105,12 @@ public class SeleniumLauncher
      * <td>Port number for web server to listen to</td>
      * </tr>
      * <tr>
+     * <td>sslPort</td>
+     * <td>tapestry.ssl-port</td>
+     * <td>8443</td>
+     * <td>Port number for web server to listen to for secure requests</td>
+     * </tr>
+     * <tr>
      * <td>browserStartCommand</td>
      * <td>tapestry.browser-start-command</td>
      * <td>*firefox</td>
@@ -128,7 +135,7 @@ public class SeleniumLauncher
     // shutdown(). Best to be safe!
     @Parameters(
     { TapestryTestConstants.WEB_APP_FOLDER_PARAMETER, TapestryTestConstants.CONTEXT_PATH_PARAMTER,
-            TapestryTestConstants.PORT_PARAMETER,
+            TapestryTestConstants.PORT_PARAMETER, TapestryTestConstants.SSL_PORT_PARAMETER,
             TapestryTestConstants.BROWSER_START_COMMAND_PARAMETER })
     @BeforeTest(dependsOnGroups = { "beforeStartup" })
     public synchronized void startup(
@@ -141,6 +148,9 @@ public class SeleniumLauncher
 
     @Optional("9090")
     int port,
+    
+    @Optional("8443")
+    int sslPort,
 
     @Optional("*firefox")
     String browserStartCommand, ITestContext testContext, XmlTest xmlTest) throws Exception
@@ -161,9 +171,13 @@ public class SeleniumLauncher
         if(testParameters.containsKey(TapestryTestConstants.BROWSER_START_COMMAND_PARAMETER))
             browserStartCommand = testParameters.get(TapestryTestConstants.BROWSER_START_COMMAND_PARAMETER);
         
-        stopWebServer = launchWebServer(webAppFolder, contextPath, port);
+        stopWebServer = launchWebServer(webAppFolder, contextPath, port, sslPort);
 
         seleniumServer = new SeleniumServer();
+        
+        File ffProfileTemplate = new File(TapestryTestConstants.MODULE_BASE_DIR, "src/test/conf/ff_profile_template");
+        
+        seleniumServer.getConfiguration().setFirefoxProfileTemplate(ffProfileTemplate);
 
         seleniumServer.start();
 
@@ -220,13 +234,15 @@ public class SeleniumLauncher
      *            the path the context is mapped to, usually the empty string
      * @param port
      *            the port number the server should handle
+     * @param sslPort
+     *            the port number on which the server should handle secure requests
      * @return Runnable used to shut down the server
      * @throws Exception
      */
-    protected Runnable launchWebServer(String webAppFolder, String contextPath, int port)
+    protected Runnable launchWebServer(String webAppFolder, String contextPath, int port, int sslPort)
             throws Exception
     {
-        final Jetty7Runner runner = new Jetty7Runner(webAppFolder, contextPath, port);
+        final Jetty7Runner runner = new Jetty7Runner(webAppFolder, contextPath, port, sslPort);
 
         return new Runnable()
         {

Modified: tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java?rev=928029&r1=928028&r2=928029&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java (original)
+++ tapestry/tapestry5/trunk/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java Fri Mar 26 19:33:00 2010
@@ -92,6 +92,11 @@ public class TapestryTestConstants
     public static final String PORT_PARAMETER = "tapestry.port";
     
     /**
+     * {@link XmlTest} parameter holding the web server ssl port.
+     */
+    public static final String SSL_PORT_PARAMETER = "tapestry.ssl-port";
+    
+    /**
      * {@link XmlTest} parameter holding the browser command to pass to Selenium.
      */
     public static final String BROWSER_START_COMMAND_PARAMETER = "tapestry.browser-start-command";