maven-wagon-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jdca...@apache.org
Subject svn commit: r826745 [1/2] - in /maven/wagon/trunk: ./ wagon-tcks/ wagon-tcks/wagon-tck-http/ wagon-tcks/wagon-tck-http/Test Plan.html/ wagon-tcks/wagon-tck-http/src/ wagon-tcks/wagon-tck-http/src/main/ wagon-tcks/wagon-tck-http/src/main/java/ wagon-tck...
Date Mon, 19 Oct 2009 18:14:36 GMT
Author: jdcasey
Date: Mon Oct 19 18:14:35 2009
New Revision: 826745

URL: http://svn.apache.org/viewvc?rev=826745&view=rev
Log:
Adding beginnings of TCK for http wagons.

Added:
    maven/wagon/trunk/wagon-tcks/
    maven/wagon/trunk/wagon-tcks/pom.xml   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Checked.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Collapsed.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Expanded.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/LeafRowHandle.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Mixed.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/blank.png   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/index.html   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/outliner.js
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/WagonTestCaseConfigurator.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/AuthSnoopFilter.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ErrorCodeServlet.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/LatencyServlet.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ProxyAuthenticationFilter.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ProxyConnectionVerifierFilter.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/RedirectionServlet.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServerFixture.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/fixture/ServletExceptionServlet.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/util/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/util/TestUtil.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/util/ValueHolder.java   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/META-INF/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/META-INF/plexus/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/META-INF/plexus/components.xml   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/default-server-root/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/default-server-root/base.txt   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/default-server-root/large.txt   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/default-server-root/protected/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/default-server-root/protected/base.txt   (with props)
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/ssl/
    maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/resources/ssl/keystore   (with props)
Modified:
    maven/wagon/trunk/pom.xml

Modified: maven/wagon/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/pom.xml?rev=826745&r1=826744&r2=826745&view=diff
==============================================================================
--- maven/wagon/trunk/pom.xml (original)
+++ maven/wagon/trunk/pom.xml Mon Oct 19 18:14:35 2009
@@ -163,6 +163,7 @@
     <module>wagon-provider-api</module>
     <module>wagon-providers</module>
     <module>wagon-provider-test</module>
+    <module>wagon-tcks</module>
   </modules>
 
   <properties>

Added: maven/wagon/trunk/wagon-tcks/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/pom.xml?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/pom.xml (added)
+++ maven/wagon/trunk/wagon-tcks/pom.xml Mon Oct 19 18:14:35 2009
@@ -0,0 +1,44 @@
+<?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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.wagon</groupId>
+    <artifactId>wagon</artifactId>
+    <version>1.0-beta-7-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>wagon-tcks</artifactId>
+  <packaging>pom</packaging>
+  <name>Maven Test Compatibility Kits</name>
+
+  <modules>
+    <module>wagon-tck-http</module>
+  </modules>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/wagon/trunk/wagon-tcks/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Checked.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/Checked.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Checked.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Collapsed.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/Collapsed.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Collapsed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Expanded.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/Expanded.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Expanded.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/LeafRowHandle.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/LeafRowHandle.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/LeafRowHandle.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Mixed.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/Mixed.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/Mixed.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/blank.png
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/blank.png?rev=826745&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/blank.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/index.html
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/index.html?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/index.html (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/index.html Mon Oct 19 18:14:35 2009
@@ -0,0 +1,547 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title></title>
+<script type="text/javascript" src="outliner.js"></script><style type="text/css">
+			
+			
+			th {
+			vertical-align: bottom;
+			
+			}
+			
+			td {
+			vertical-align: top;
+			}
+			
+			td,th {
+			
+			empty-cells: show;
+			}
+			
+			.top-right-border {
+			
+			}
+			
+			.no-border {
+			border-bottom: 0px;
+			border-left: 0px;
+			}
+			
+			
+			
+			
+			table {
+			
+			font-family: Helvetica, sans-serif;
+			font-size: 12px;
+						
+			
+			}
+
+			
+			
+			.wholeDocument {
+			
+	
+			}
+		
+			
+			td.subcell {
+			border: none;
+			}
+			
+			td.content {
+			padding-left: 4px;
+			padding-bottom: 2px;
+			padding-top: 1px;
+			padding-right: 3px;
+			}
+			
+			.full {
+			height: 100%;
+			}
+			
+			.heighthack {
+			height: 8px;
+			}
+			
+			div.titlepadding { 
+			padding-right:3px;
+			padding-left:6px;
+			padding-bottom:3px;
+			padding-top: 2px;
+			}
+			
+			
+					.summary_node {
+						background: rgba(0,0,0,.12);
+						margin-bottom: 1px;
+					}
+				
+			
+			div.column {   
+			padding-right: 3px;
+			padding-left: 4px;
+			padding-top: 1px;
+			padding-bottom: 2px;
+			margin-right: 1px;
+			}
+			
+			.labelpadding {
+			padding-right: 3px;
+			padding-top: 1px;
+			padding-left: 2px;
+			}
+			
+			.indicator {
+			white-space: nowrap;
+			text-align:right;
+			margin-right: 0px;
+			vertical-align: top;
+			padding-top: 1px;
+			padding-left: 0px;
+			}
+			
+			.wholedocgutter {
+			
+			}
+			
+			div.row {
+			}
+			
+			.expanded {
+			display: inline;
+			}
+			.collapsed {
+			display: none;
+			}
+			
+			
+			
+			
+			.note { 
+			padding-left: 5px;
+			padding-right: 3px; 
+			border: none; 
+			color:rgb(84,84,84) ;  font-style: italic;font-size: 11px;font-style: italic;font-size: 11px;
+			}
+			
+			/* Total table width is 665
+			Adjusted table width is 704 */
+			
+			.wholething {
+				width: auto;
+			}
+			
+			
+			table.row {
+				
+						width: 665px;
+						
+			
+			}
+			
+			
+    .col_width1 { 
+        width: 665px;  /* Actual width is 665 */
+    }
+
+    .col1 { 
+        
+    }
+
+    .colbackground1 { 
+        
+    }
+
+			
+			/* Level Styles */
+			
+			
+    .columntitle { 
+        text-decoration:  underline;font-weight: 900;  
+    }
+
+    .ns-Highlight { 
+        }
+
+    .ns-Citation { 
+        text-decoration:  underline;}
+
+    .ns-Emphasis { 
+        font-style: italic;}
+
+    .ns-bg-Highlight { 
+        background-color:rgb(253,255,89) ;  }
+
+    .ns-bg-Citation { 
+        }
+
+    .ns-bg-Emphasis { 
+        }
+
+    .ns-gutter-Highlight { 
+        }
+
+    .ns-gutter-Citation { 
+        }
+
+    .ns-gutter-Emphasis { 
+        }
+</style>
+</head>
+<body class="wholeDocument"><table cellspacing="0" cellpadding="0" class="top-right-border"><tr><td class="wholething no-border">
+<!--Column Titles--><table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" colbackground1 col_width1"><div class="columntitle titlepadding">jetty wagon test plan<br>
+</div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor1"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level1 levelguttercolor1" style="width: 9px;"></td>
+<td class=" subcell wholedocgutter indicator level1 levelguttercolor1" style="width: 28px;">
+<img onmousedown="ioSwitch('pdL-2-4CeZ_A', event.shiftKey)" id="idL-2-4CeZ_A" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level1 subcell">Test protocols<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pdL-2-4CeZ_A" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">HTTP<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">HTTPS<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor1"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level1 levelguttercolor1" style="width: 9px;"></td>
+<td class=" subcell wholedocgutter indicator level1 levelguttercolor1" style="width: 28px;">
+<img onmousedown="ioSwitch('ppKx-EBsHInR', event.shiftKey)" id="ipKx-EBsHInR" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level1 subcell">Test methods<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="ppKx-EBsHInR" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">GET<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">PUT<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">HEAD / exists<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor1"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level1 levelguttercolor1" style="width: 9px;"></td>
+<td class=" subcell wholedocgutter indicator level1 levelguttercolor1" style="width: 28px;">
+<img onmousedown="ioSwitch('pgZguun1qkaq', event.shiftKey)" id="igZguun1qkaq" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="-" src="Mixed.png">
+</td>
+<td class=" content level1 subcell">Use cases<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pgZguun1qkaq" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">Unknown host<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('paWyO4QxYcZ4', event.shiftKey)" id="iaWyO4QxYcZ4" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="-" src="Mixed.png">
+</td>
+<td class=" content level2 subcell">Authentication<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="paWyO4QxYcZ4" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">Successful auth<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">Unsuccessful auth<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Preemptive auth<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img onmousedown="ioSwitch('pbYkdv0TZhE0', event.shiftKey)" id="ibYkdv0TZhE0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Non-preemptive auth<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pbYkdv0TZhE0" class="expanded"><table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor4"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level4 levelguttercolor4" style="width: 57px;"></td>
+<td class=" subcell wholedocgutter indicator level4 levelguttercolor4" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level4 subcell">Should not send payload twice, if it can be helped<br>
+</td>
+</tr></table></div></td></tr></table></div>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('pm7xnl6vfRpr', event.shiftKey)" id="im7xnl6vfRpr" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">Connection latency<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pm7xnl6vfRpr" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">High latency, high timeout<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">High latency, low timeout<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">No response<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('pggbym_SYZLf', event.shiftKey)" id="iggbym_SYZLf" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">Common errors<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pggbym_SYZLf" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">404<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">500<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">503<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">403<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('pk0GGB8xKMIl', event.shiftKey)" id="ik0GGB8xKMIl" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level2 subcell">Redirection: 301 / 302<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pk0GGB8xKMIl" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">Redirection within max count<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">Redirection over max count<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt="X" src="Checked.png">
+</td>
+<td class=" content level3 subcell">Infinite redirection<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('pbWXzVsPT3Hp', event.shiftKey)" id="ibWXzVsPT3Hp" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">Proxies<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="pbWXzVsPT3Hp" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">No authentication<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Authorization failure<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Authentication success<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('penTOz-jTxgS', event.shiftKey)" id="ienTOz-jTxgS" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">Headers<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="penTOz-jTxgS" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">User Agent<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">no-cache (Pragma, etc.)<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img onmousedown="ioSwitch('peLJz35zJNnE', event.shiftKey)" id="ieLJz35zJNnE" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Authorization<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="peLJz35zJNnE" class="expanded"><table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor4"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level4 levelguttercolor4" style="width: 57px;"></td>
+<td class=" subcell wholedocgutter indicator level4 levelguttercolor4" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level4 subcell">long (something that will line-wrap Sun's header impl)<br>
+</td>
+</tr></table></div></td></tr></table></div>
+</div>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor2"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level2 levelguttercolor2" style="width: 25px;"></td>
+<td class=" subcell wholedocgutter indicator level2 levelguttercolor2" style="width: 28px;">
+<img onmousedown="ioSwitch('piJYOloS6FYo', event.shiftKey)" id="iiJYOloS6FYo" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" border="0" alt="V" src="Expanded.png" title="collapse"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level2 subcell">File listing<br>
+</td>
+</tr></table></div></td></tr></table>
+<div id="piJYOloS6FYo" class="expanded">
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Missing directory<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">normal listing<br>
+</td>
+</tr></table></div></td></tr></table>
+<table cellspacing="0" border="0" cellpadding="0" class="row heighthack"><tr><td class=" col1 colbackground1 col_width1" style=""><div class=" full levelcolor3"><table border="0" cellspacing="0" cellpadding="0" style="height:100%" class=" col_width1 col1"><tr>
+<td class=" subcell wholedocgutter level3 levelguttercolor3" style="width: 41px;"></td>
+<td class=" subcell wholedocgutter indicator level3 levelguttercolor3" style="width: 28px;">
+<img border="0" style="margin-left: 3px; margin-right:3px; margin-top: 3px;" alt="*" src="LeafRowHandle.png"><img border="0" style="margin-left: 2px; margin-right: 2px; margin-top: 3px;" alt=" " src="Unchecked.png">
+</td>
+<td class=" content level3 subcell">Forbidden directory listing<br>
+</td>
+</tr></table></div></td></tr></table>
+</div>
+</div>
+</td></tr></table></body>
+</html>

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/index.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/outliner.js
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test%20Plan.html/outliner.js?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/outliner.js (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/Test Plan.html/outliner.js Mon Oct 19 18:14:35 2009
@@ -0,0 +1,115 @@
+var img_expanded  = 'Expanded.png';
+var img_collapsed = 'Collapsed.png';
+var img_blank = 'blank.png';
+var img_leaf = 'LeafRowHandle.png';
+
+new Image(9,9),src = img_expanded; // caching
+new Image(9,9),src = img_collapsed; // caching
+new Image(9,9),src = img_blank; // caching
+new Image(9,9),src = img_leaf; // caching
+
+function hover(iNode, over) {
+
+    if (over) {
+        t = document.getElementById(iNode).alt;
+        
+        if (t == '*') {
+            document.getElementById(iNode).src=img_leaf;
+        } else if (t == 'V') {
+            document.getElementById(iNode).src=img_expanded;
+        } else {
+            document.getElementById(iNode).src=img_collapsed;
+        }
+    
+    } else {
+        document.getElementById(iNode).src=img_blank;
+    }
+}
+
+function expand(ioNode) {
+	ioWedge = "i" + ioNode.substr(1);
+
+	if (document.getElementById && document.getElementById(ioNode) !=  null) {
+
+		document.getElementById(ioNode).className='expanded';
+
+		if (document.getElementById(ioWedge) !=  null) {		
+			document.getElementById(ioWedge).src=img_expanded;
+			document.getElementById(ioWedge).title='collapse';
+			document.getElementById(ioWedge).alt='V';
+		}
+	}
+}
+
+function collapse(ioNode) {
+	ioWedge = "i" + ioNode.substr(1);
+
+	if (document.getElementById && document.getElementById(ioNode) != null) {
+
+		document.getElementById(ioNode).className='collapsed';
+
+		if (document.getElementById(ioWedge) !=  null) {		
+			document.getElementById(ioWedge).src=img_collapsed;
+			document.getElementById(ioWedge).title='expand';
+			document.getElementById(ioWedge).alt='>';
+		}
+	}
+}
+
+function ioSwitch(ioNode,fully) {
+
+	if (document.getElementById && document.getElementById(ioNode) !=  null) {
+		nodeState = document.getElementById(ioNode).className;
+	}
+
+    if (nodeState == 'collapsed') {
+        if (fully) {
+            expandAll();
+        } else {
+    		expand(ioNode);
+        }
+	}
+
+	else {
+        if (fully) {
+            collapseAll();
+        } else {
+    		collapse(ioNode);
+        }
+	}
+}
+
+function expandAll() {
+
+	if (document.getElementsByTagName) {
+		nodeList = document.getElementsByTagName('div');
+
+		for (var i = 0; i < nodeList.length; i++) {
+	
+			if (nodeList.item(i).className == 'expanded' || nodeList.item(i).className == 'collapsed') {
+				expand(nodeList.item(i).id);	
+			}
+		}
+	}
+
+	else {
+		alert ("Sorry, don't know how to make this run in your browser.");
+	}
+}
+
function collapseAll() {
+
+	if (document.getElementsByTagName) {
+		nodeList = document.getElementsByTagName('div');
+
+		for (var i = 0; i < nodeList.length; i++) {
+	
+			if (nodeList.item(i).className == 'expanded' || nodeList.item(i).className == 'collapsed') {
+				collapse(nodeList.item(i).id);	
+			}
+		}
+	}
+
+	else {
+		alert ("Sorry, don't know how to make this run in your browser.");
+	}
+}

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml Mon Oct 19 18:14:35 2009
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  
+  <parent>
+    <groupId>org.apache.maven.wagon</groupId>
+    <artifactId>wagon-tcks</artifactId>
+    <version>1.0-beta-7-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>wagon-tck-http</artifactId>
+  
+  <name>Wagon HTTP Test Compatibility Kit</name>
+
+  <dependencies>
+    <!-- TODO: Split this out into a sample project that shows how to use this TCK. -->
+    <dependency>
+        <groupId>org.apache.maven.wagon</groupId>
+        <artifactId>wagon-http-lightweight</artifactId>
+        <version>1.0-beta-6</version>
+    </dependency>
+    <dependency>
+    	<groupId>org.codehaus.plexus</groupId>
+    	<artifactId>plexus-container-default</artifactId>
+    	<version>1.0-alpha-9-stable-1</version>
+    	<scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.5</version>
+    </dependency>
+    <dependency>
+    	<groupId>org.mortbay.jetty</groupId>
+    	<artifactId>jetty</artifactId>
+    	<version>6.1.21</version>
+    </dependency>
+    <dependency>
+    	<groupId>org.apache.maven.wagon</groupId>
+    	<artifactId>wagon-provider-api</artifactId>
+    	<version>1.0-beta-6</version>
+    </dependency>
+    <dependency>
+    	<groupId>commons-codec</groupId>
+    	<artifactId>commons-codec</artifactId>
+    	<version>1.4</version>
+    </dependency>
+  </dependencies>
+  
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>2.0.2</version>
+          <configuration>
+            <source>1.5</source>
+            <target>1.5</target>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java Mon Oct 19 18:14:35 2009
@@ -0,0 +1,46 @@
+package org.apache.maven.wagon.tck.http;
+
+import static junit.framework.Assert.assertEquals;
+import static org.codehaus.plexus.util.FileUtils.fileRead;
+
+import org.codehaus.plexus.util.IOUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+public final class Assertions
+{
+
+    public static void assertFileContentsFromResource( final String resourceBase, final String resourceName,
+                                                       final File output, final String whyWouldItFail )
+        throws IOException
+    {
+        String content = readResource( resourceBase, resourceName );
+        String test = fileRead( output );
+
+        assertEquals( whyWouldItFail, content, test );
+    }
+
+    private static String readResource( final String base, final String name )
+        throws IOException
+    {
+        String url = base;
+        if ( !url.endsWith( "/" ) && !name.startsWith( "/" ) )
+        {
+            url += "/";
+        }
+        url += name;
+
+        ClassLoader cloader = Thread.currentThread().getContextClassLoader();
+        InputStream stream = cloader.getResourceAsStream( url );
+
+        if ( stream == null )
+        {
+            return null;
+        }
+
+        return IOUtil.toString( stream );
+    }
+
+}

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/Assertions.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java Mon Oct 19 18:14:35 2009
@@ -0,0 +1,533 @@
+package org.apache.maven.wagon.tck.http;
+
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+import static org.apache.maven.wagon.tck.http.Assertions.assertFileContentsFromResource;
+
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.StreamWagon;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.tck.http.fixture.ErrorCodeServlet;
+import org.apache.maven.wagon.tck.http.fixture.LatencyServlet;
+import org.apache.maven.wagon.tck.http.fixture.ProxyConnectionVerifierFilter;
+import org.apache.maven.wagon.tck.http.fixture.RedirectionServlet;
+import org.apache.maven.wagon.tck.http.fixture.ServerFixture;
+import org.apache.maven.wagon.tck.http.fixture.ServletExceptionServlet;
+import org.apache.maven.wagon.tck.http.util.ValueHolder;
+import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.Servlet;
+import javax.servlet.http.HttpServletResponse;
+
+public class GetWagonTests
+    extends HttpWagonTests
+{
+
+    @Test
+    public void basic()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        testSuccessfulGet( "base.txt" );
+    }
+
+    @Test
+    @Ignore( "FIX ME!" )
+    public void proxied()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        getServerFixture().addFilter( "*", new ProxyConnectionVerifierFilter() );
+
+        ProxyInfo info = newProxyInfo();
+        if ( !initTest( null, info ) )
+        {
+            return;
+        }
+
+        File target = newTempFile();
+        getWagon().get( "base.txt", target );
+
+        assertFileContentsFromResource( ServerFixture.SERVER_ROOT_RESOURCE_PATH, "base.txt", target,
+                                        "Downloaded file doesn't match original." );
+    }
+
+    @Test
+    public void highLatencyHighTimeout()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        getServerFixture().addServlet( "/slow/*", new LatencyServlet( 2000 ) );
+        testSuccessfulGet( "slow/large.txt", "large.txt" );
+    }
+
+    @Test
+    public void highLatencyLowTimeout()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        Servlet servlet = new LatencyServlet( 2000 );
+        getServerFixture().addServlet( "/slow/*", servlet );
+        testSuccessfulGet( "slow/large.txt", "large.txt" );
+    }
+
+    @Test
+    public void inifiniteLatencyTimeout()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        if ( !isSupported() )
+        {
+            return;
+        }
+
+        final ValueHolder<Boolean> holder = new ValueHolder<Boolean>( false );
+
+        Runnable r = new Runnable()
+        {
+            public void run()
+            {
+                Servlet servlet = new LatencyServlet( -1 );
+                addNotificationTarget( servlet );
+
+                getServerFixture().addServlet( "/infinite/*", servlet );
+                try
+                {
+                    if ( !initTest( null, null ) )
+                    {
+                        return;
+                    }
+
+                    if ( getWagon() instanceof StreamWagon )
+                    {
+                        System.out.println( "Connection timeout is: " + ( (StreamWagon) getWagon() ).getTimeout() );
+                    }
+
+                    File target = newTempFile();
+                    getWagon().get( "infinite/", target );
+
+                    fail( "Should have failed to transfer due to transaction timeout." );
+                }
+                catch ( ConnectionException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+                catch ( AuthenticationException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+                catch ( TransferFailedException e )
+                {
+                    // expected
+                    holder.setValue( true );
+                }
+                catch ( ResourceDoesNotExistException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+                catch ( AuthorizationException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+                catch ( ComponentConfigurationException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+                catch ( IOException e )
+                {
+                    throw new IllegalStateException( e );
+                }
+            }
+        };
+
+        Thread t = new Thread( r );
+        t.start();
+
+        try
+        {
+            System.out.println( "Waiting 60 seconds for wagon timeout." );
+            t.join( 30000 );
+        }
+        catch ( InterruptedException e )
+        {
+            e.printStackTrace();
+        }
+
+        System.out.println( "Interrupting thread." );
+        t.interrupt();
+
+        assertTrue( "TransferFailedException should have been thrown.", holder.getValue() );
+    }
+
+    @Test
+    public void nonExistentHost()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        ResourceDoesNotExistException, AuthorizationException
+    {
+        if ( !initTest( "http://dummy-host", null, null ) )
+        {
+            return;
+        }
+
+        File target = newTempFile();
+        try
+        {
+            getWagon().get( "base.txt", target );
+            fail( "Expected error related to host lookup failure." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+
+    @Test
+    public void oneLevelPermanentMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        getServerFixture().addServlet( "/moved.txt",
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_PERMANENTLY, "/base.txt" ) );
+
+        testSuccessfulGet( "moved.txt" );
+    }
+
+    @Test
+    public void oneLevelTemporaryMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        getServerFixture().addServlet( "/moved.txt",
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_TEMPORARILY, "/base.txt" ) );
+
+        testSuccessfulGet( "moved.txt" );
+    }
+
+    @Test
+    public void sixLevelPermanentMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_PERMANENTLY, myPath,
+                                                               targetPath, 6 ) );
+
+        testSuccessfulGet( myPath );
+    }
+
+    @Test
+    public void sixLevelTemporaryMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_TEMPORARILY, myPath,
+                                                               targetPath, 6 ) );
+
+        testSuccessfulGet( myPath );
+    }
+
+    @Test
+    public void infinitePermanentMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_PERMANENTLY, myPath,
+                                                               targetPath, -1 ) );
+
+        try
+        {
+            testSuccessfulGet( myPath );
+            fail( "Expected failure as a result of too many redirects." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+
+    @Test
+    public void infiniteTemporaryMove()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_TEMPORARILY, myPath,
+                                                               targetPath, -1 ) );
+
+        try
+        {
+            testSuccessfulGet( myPath );
+            fail( "Expected failure as a result of too many redirects." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+
+    /**
+     * NOTE: This test depends on a {@link WagonTestCaseConfigurator} configuration to limit redirects to 20. In the
+     * case of the Sun HTTP implementation, this is the default limit.
+     */
+    @Test
+    public void permanentMove_TooManyRedirects_limit20()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_PERMANENTLY, myPath,
+                                                               targetPath, -1 ) );
+
+        try
+        {
+            testSuccessfulGet( myPath );
+            fail( "Expected failure as a result of too many redirects." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+
+    /**
+     * NOTE: This test depends on a {@link WagonTestCaseConfigurator} configuration to limit redirects to 20. In the
+     * case of the Sun HTTP implementation, this is the default limit.
+     */
+    @Test
+    public void temporaryMove_TooManyRedirects_limit20()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        ResourceDoesNotExistException, AuthorizationException
+    {
+        String myPath = "moved.txt";
+        String targetPath = "/base.txt";
+
+        getServerFixture().addServlet(
+                                       "/" + myPath,
+                                       new RedirectionServlet( HttpServletResponse.SC_MOVED_TEMPORARILY, myPath,
+                                                               targetPath, -1 ) );
+
+        try
+        {
+            testSuccessfulGet( myPath );
+            fail( "Expected failure as a result of too many redirects." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+
+    @Test
+    public void missing()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, AuthorizationException
+    {
+        if ( !initTest( null, null ) )
+        {
+            return;
+        }
+
+        File target = newTempFile();
+        try
+        {
+            getWagon().get( "404.txt", target );
+            fail( "should have received a 404, meaning the resource doesn't exist." );
+        }
+        catch ( ResourceDoesNotExistException e )
+        {
+            // expected
+        }
+    }
+
+    @Test
+    public void error()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        AuthorizationException, ResourceDoesNotExistException
+    {
+        testErrorHandling( HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
+    }
+
+    @Test
+    public void proxyTimeout()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        AuthorizationException, ResourceDoesNotExistException
+    {
+        testErrorHandling( HttpServletResponse.SC_GATEWAY_TIMEOUT );
+    }
+
+    @Test
+    public void forbidden()
+        throws ConnectionException, ComponentConfigurationException, IOException, ResourceDoesNotExistException,
+        TransferFailedException
+    {
+        AuthenticationInfo info = new AuthenticationInfo();
+        info.setUserName( "user" );
+        info.setPassword( "password" );
+
+        getServerFixture().addUser( info.getUserName(), "password" );
+
+        getServerFixture().addServlet( "/403.txt",
+                                       new ErrorCodeServlet( HttpServletResponse.SC_FORBIDDEN, "Expected 403" ) );
+
+        testAuthFailure( "403.txt", info );
+    }
+
+    @Test
+    public void successfulAuthentication()
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        AuthenticationInfo info = new AuthenticationInfo();
+        info.setUserName( "user" );
+        info.setPassword( "password" );
+
+        getServerFixture().addUser( info.getUserName(), info.getPassword() );
+
+        if ( !initTest( info, null ) )
+        {
+            return;
+        }
+
+        File target = newTempFile();
+        getWagon().get( "protected/base.txt", target );
+
+        assertFileContentsFromResource( ServerFixture.SERVER_ROOT_RESOURCE_PATH, "base.txt", target,
+                                        "Downloaded file doesn't match original." );
+    }
+
+    @Test
+    public void unsuccessfulAuthentication()
+        throws ConnectionException, ComponentConfigurationException, IOException, TransferFailedException,
+        ResourceDoesNotExistException
+    {
+        AuthenticationInfo info = new AuthenticationInfo();
+        info.setUserName( "user" );
+        info.setPassword( "password" );
+
+        getServerFixture().addUser( info.getUserName(), "anotherPassword" );
+
+        testAuthFailure( "protected/base.txt", info );
+    }
+
+    protected void testAuthFailure( final String path, final AuthenticationInfo info )
+        throws ConnectionException, ComponentConfigurationException, IOException, TransferFailedException,
+        ResourceDoesNotExistException
+    {
+        boolean authFailure = false;
+        try
+        {
+            if ( !initTest( info, null ) )
+            {
+                return;
+            }
+        }
+        catch ( AuthenticationException e )
+        {
+            // expected
+            authFailure = true;
+        }
+
+        File target = newTempFile();
+        try
+        {
+            getWagon().get( path, target );
+        }
+        catch ( AuthorizationException e )
+        {
+            // expected
+            authFailure = true;
+        }
+
+        assertTrue( "Authentication/Authorization should have failed.", authFailure );
+    }
+
+    protected void testSuccessfulGet( final String path )
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        testSuccessfulGet( path, "base.txt" );
+    }
+
+    protected void testSuccessfulGet( final String path, final String checkPath )
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        TransferFailedException, ResourceDoesNotExistException, AuthorizationException
+    {
+        if ( !initTest( null, null ) )
+        {
+            return;
+        }
+
+        if ( getWagon() instanceof StreamWagon )
+        {
+            System.out.println( "Connection timeout is: " + ( (StreamWagon) getWagon() ).getTimeout() );
+        }
+
+        File target = newTempFile();
+        getWagon().get( path, target );
+
+        assertFileContentsFromResource( ServerFixture.SERVER_ROOT_RESOURCE_PATH, checkPath, target,
+                                        "Downloaded file doesn't match original." );
+    }
+
+    protected void testErrorHandling( final int code )
+        throws ConnectionException, AuthenticationException, ComponentConfigurationException, IOException,
+        AuthorizationException, ResourceDoesNotExistException
+    {
+        if ( code == HttpServletResponse.SC_INTERNAL_SERVER_ERROR )
+        {
+            getServerFixture().addServlet( "/" + code + ".txt", new ServletExceptionServlet( "Expected " + code ) );
+        }
+        else
+        {
+            getServerFixture().addServlet( "/" + code + ".txt", new ErrorCodeServlet( code, "Expected " + code ) );
+        }
+
+        if ( !initTest( null, null ) )
+        {
+            return;
+        }
+
+        File target = newTempFile();
+        try
+        {
+            getWagon().get( code + ".txt", target );
+            fail( "should have received a " + code + " error code, meaning the resource doesn't exist." );
+        }
+        catch ( TransferFailedException e )
+        {
+            // expected
+        }
+    }
+}

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/GetWagonTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java Mon Oct 19 18:14:35 2009
@@ -0,0 +1,319 @@
+package org.apache.maven.wagon.tck.http;
+
+import static org.apache.maven.wagon.tck.http.util.TestUtil.getResource;
+
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.proxy.ProxyInfo;
+import org.apache.maven.wagon.repository.Repository;
+import org.apache.maven.wagon.tck.http.fixture.ServerFixture;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
+import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
+import org.codehaus.plexus.util.FileUtils;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class HttpWagonTests
+{
+
+    private ServerFixture serverFixture;
+
+    private static PlexusContainer container;
+
+    private Wagon wagon;
+
+    private static WagonTestCaseConfigurator configurator;
+
+    private String baseUrl;
+
+    private final static Set<File> tmpFiles = new HashSet<File>();
+
+    private Repository repo;
+
+    private final Set<Object> notificationTargets = new HashSet<Object>();
+
+    @Before
+    public void beforeEach()
+        throws Exception
+    {
+        serverFixture = new ServerFixture( getPort(), isSsl() );
+        wagon = (Wagon) container.lookup( Wagon.ROLE, configurator.getWagonHint() );
+    }
+
+    @BeforeClass
+    public static void beforeAll()
+        throws Exception
+    {
+        File keystore = getResource( ServerFixture.SERVER_SSL_KEYSTORE_RESOURCE_PATH );
+
+        System.setProperty( "javax.net.ssl.keyStore", keystore.getAbsolutePath() );
+        System.setProperty( "javax.net.ssl.keyStorePassword", ServerFixture.SERVER_SSL_KEYSTORE_PASSWORD );
+        System.setProperty( "javax.net.ssl.trustStore", keystore.getAbsolutePath() );
+        System.setProperty( "javax.net.ssl.trustStorePassword", ServerFixture.SERVER_SSL_KEYSTORE_PASSWORD );
+
+        container = new DefaultPlexusContainer();
+        container.initialize();
+        container.start();
+
+        configurator = (WagonTestCaseConfigurator) container.lookup( WagonTestCaseConfigurator.class.getName() );
+    }
+
+    @After
+    public void afterEach()
+    {
+        try
+        {
+            wagon.disconnect();
+        }
+        catch ( ConnectionException e )
+        {
+            e.printStackTrace();
+        }
+
+        for ( Object obj : notificationTargets )
+        {
+            synchronized ( obj )
+            {
+                obj.notify();
+            }
+        }
+
+        if ( serverFixture != null )
+        {
+            try
+            {
+                serverFixture.stop();
+            }
+            catch ( Exception e )
+            {
+                e.printStackTrace();
+            }
+        }
+
+        try
+        {
+            container.release( wagon );
+        }
+        catch ( ComponentLifecycleException e )
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @AfterClass
+    public static void afterAll()
+    {
+        for ( File f : tmpFiles )
+        {
+            if ( f.exists() )
+            {
+                try
+                {
+                    FileUtils.forceDelete( f );
+                }
+                catch ( IOException e )
+                {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        if ( container != null )
+        {
+            try
+            {
+                container.release( configurator );
+            }
+            catch ( ComponentLifecycleException e )
+            {
+                e.printStackTrace();
+            }
+
+            container.dispose();
+        }
+    }
+
+    protected void addNotificationTarget( final Object target )
+    {
+        notificationTargets.add( target );
+    }
+
+    protected File newTempFile()
+        throws IOException
+    {
+        File f = File.createTempFile( "wagon-target.", ".file" );
+        f.deleteOnExit();
+
+        return f;
+    }
+
+    protected boolean isSsl()
+    {
+        return false;
+    }
+
+    protected ProxyInfo newProxyInfo()
+    {
+        ProxyInfo info = new ProxyInfo();
+        info.setType( isSsl() ? "https" : "http" );
+        info.setHost( ServerFixture.SERVER_HOST );
+        info.setPort( getPort() );
+
+        return info;
+    }
+
+    protected boolean isSupported()
+    {
+        StackTraceElement[] elements = new Throwable().getStackTrace();
+        String testCaseId = null;
+        String lastMethodName = null;
+        for ( StackTraceElement e : elements )
+        {
+            if ( !e.getClassName().startsWith( getClass().getPackage().getName() ) )
+            {
+                testCaseId = lastMethodName;
+                break;
+            }
+            else
+            {
+                lastMethodName = e.getMethodName();
+            }
+        }
+
+        if ( testCaseId == null || !configurator.isSupported( testCaseId ) )
+        {
+            System.out.println( "Cannot run test: " + testCaseId
+                + ". Wagon under test does not support this test case." );
+            return false;
+        }
+
+        return true;
+    }
+
+    protected boolean initTest( final AuthenticationInfo auth, final ProxyInfo proxy )
+        throws ComponentConfigurationException, ConnectionException, AuthenticationException
+    {
+        return initTest( getBaseUrl(), auth, proxy );
+    }
+
+    protected boolean initTest( final String baseUrl, final AuthenticationInfo auth, final ProxyInfo proxy )
+        throws ComponentConfigurationException, ConnectionException, AuthenticationException
+    {
+        StackTraceElement[] elements = new Throwable().getStackTrace();
+        String testCaseId = null;
+        String lastMethodName = null;
+        for ( StackTraceElement e : elements )
+        {
+            if ( !e.getClassName().startsWith( getClass().getPackage().getName() ) )
+            {
+                testCaseId = lastMethodName;
+                break;
+            }
+            else
+            {
+                lastMethodName = e.getMethodName();
+            }
+        }
+
+        if ( testCaseId == null || !configurator.configureWagonForTest( wagon, testCaseId ) )
+        {
+            System.out.println( "Cannot run test: " + testCaseId
+                + ". Wagon under test does not support this test case." );
+
+            return false;
+        }
+
+        try
+        {
+            serverFixture.start();
+        }
+        catch ( Exception e )
+        {
+            throw new IllegalStateException( "Failed to start: " + e.getMessage(), e );
+        }
+
+        repo = new Repository( "test", baseUrl );
+
+        wagon.connect( repo, auth, proxy );
+
+        return true;
+    }
+
+    protected int getPort()
+    {
+        int port = getPortPropertyValue();
+        if ( port < 1 )
+        {
+            port = getDefaultPort();
+        }
+
+        return port;
+    }
+
+    protected int getDefaultPort()
+    {
+        return 9080;
+    }
+
+    protected int getPortPropertyValue()
+    {
+        return Integer.parseInt( System.getProperty( "test.port", "-1" ) );
+    }
+
+    protected String getBaseUrl()
+    {
+        if ( baseUrl == null )
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.append( isSsl() ? "https" : "http" );
+            sb.append( "://" + ServerFixture.SERVER_HOST + ":" );
+            sb.append( getPort() );
+
+            baseUrl = sb.toString();
+        }
+
+        return baseUrl;
+    }
+
+    protected ServerFixture getServerFixture()
+    {
+        return serverFixture;
+    }
+
+    protected static PlexusContainer getContainer()
+    {
+        return container;
+    }
+
+    protected Wagon getWagon()
+    {
+        return wagon;
+    }
+
+    protected static WagonTestCaseConfigurator getConfigurator()
+    {
+        return configurator;
+    }
+
+    protected static Set<File> getTmpfiles()
+    {
+        return tmpFiles;
+    }
+
+    protected Repository getRepo()
+    {
+        return repo;
+    }
+
+}

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpWagonTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java?rev=826745&view=auto
==============================================================================
--- maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java (added)
+++ maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java Mon Oct 19 18:14:35 2009
@@ -0,0 +1,19 @@
+package org.apache.maven.wagon.tck.http;
+
+
+public class HttpsGetWagonTests
+    extends GetWagonTests
+{
+    @Override
+    protected boolean isSsl()
+    {
+        return true;
+    }
+
+    @Override
+    protected int getDefaultPort()
+    {
+        return 9443;
+    }
+
+}

Propchange: maven/wagon/trunk/wagon-tcks/wagon-tck-http/src/main/java/org/apache/maven/wagon/tck/http/HttpsGetWagonTests.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org


Mime
View raw message