View Javadoc

1   package org.apache.maven.archiva.webdav;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import com.meterware.httpunit.GetMethodWebRequest;
23  import com.meterware.httpunit.HttpUnitOptions;
24  import com.meterware.httpunit.WebRequest;
25  import com.meterware.httpunit.WebResponse;
26  
27  import org.apache.maven.archiva.policies.SnapshotsPolicy;
28  
29  import java.io.File;
30  
31  /**
32   * RepositoryServlet Tests, Proxied, Get of Timestamped Snapshot Artifacts, with varying policy settings. 
33   *
34   * @version $Id: RepositoryServletProxiedTimestampedSnapshotPolicyTest.java 718864 2008-11-19 06:33:35Z brett $
35   */
36  public class RepositoryServletProxiedTimestampedSnapshotPolicyTest
37      extends AbstractRepositoryServletProxiedTestCase
38  {
39      public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedNewer()
40          throws Exception
41      {
42          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.ALWAYS,
43                                                       HAS_MANAGED_COPY, ( NEWER * OVER_ONE_DAY ) );
44      }
45  
46      public void testGetProxiedSnapshotsArtifactPolicyAlwaysManagedOlder()
47          throws Exception
48      {
49          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ALWAYS, HAS_MANAGED_COPY,
50                                                       ( OLDER * OVER_ONE_DAY ) );
51      }
52  
53      public void testGetProxiedSnapshotsArtifactPolicyAlwaysNoManagedContent()
54          throws Exception
55      {
56          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ALWAYS, NO_MANAGED_COPY );
57      }
58  
59      public void testGetProxiedSnapshotsArtifactPolicyDailyFail()
60          throws Exception
61      {
62          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY,
63                                                       ( NEWER * ONE_MINUTE ) );
64      }
65  
66      public void testGetProxiedSnapshotsArtifactPolicyDailyNoManagedContent()
67          throws Exception
68      {
69          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, NO_MANAGED_COPY );
70      }
71  
72      public void testGetProxiedSnapshotsArtifactPolicyDailyPass()
73          throws Exception
74      {
75          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.DAILY, HAS_MANAGED_COPY,
76                                                       ( OLDER * OVER_ONE_DAY ) );
77      }
78  
79      public void testGetProxiedSnapshotsArtifactPolicyRejectFail()
80          throws Exception
81      {
82          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.NEVER,
83                                                       HAS_MANAGED_COPY );
84      }
85  
86      public void testGetProxiedSnapshotsArtifactPolicyRejectNoManagedContentFail()
87          throws Exception
88      {
89          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_NOT_FOUND, SnapshotsPolicy.NEVER, NO_MANAGED_COPY );
90      }
91  
92      public void testGetProxiedSnapshotsArtifactPolicyRejectPass()
93          throws Exception
94      {
95          assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.NEVER,
96                                                       HAS_MANAGED_COPY );
97      }
98  
99      public void testGetProxiedSnapshotsArtifactPolicyHourlyFail()
100         throws Exception
101     {
102         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY,
103                                                      ( NEWER * ONE_MINUTE ) );
104     }
105 
106     public void testGetProxiedSnapshotsArtifactPolicyHourlyNoManagedContent()
107         throws Exception
108     {
109         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, NO_MANAGED_COPY );
110     }
111 
112     public void testGetProxiedSnapshotsArtifactPolicyHourlyPass()
113         throws Exception
114     {
115         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.HOURLY, HAS_MANAGED_COPY,
116                                                      ( OLDER * OVER_ONE_HOUR ) );
117     }
118 
119     public void testGetProxiedSnapshotsArtifactPolicyOnceFail()
120         throws Exception
121     {
122         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_MANAGED_CONTENTS, SnapshotsPolicy.ONCE, HAS_MANAGED_COPY );
123     }
124 
125     public void testGetProxiedSnapshotsArtifactPolicyOnceNoManagedContent()
126         throws Exception
127     {
128         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY );
129     }
130 
131     public void testGetProxiedSnapshotsArtifactPolicyOncePass()
132         throws Exception
133     {
134         assertGetProxiedSnapshotsArtifactWithPolicy( EXPECT_REMOTE_CONTENTS, SnapshotsPolicy.ONCE, NO_MANAGED_COPY );
135     }
136 
137     private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
138                                                               boolean hasManagedCopy )
139         throws Exception
140     {
141         assertGetProxiedSnapshotsArtifactWithPolicy( expectation, snapshotsPolicy, hasManagedCopy, 0 );
142     }
143 
144     private void assertGetProxiedSnapshotsArtifactWithPolicy( int expectation, String snapshotsPolicy,
145                                                               boolean hasManagedCopy, long deltaManagedToRemoteTimestamp )
146         throws Exception
147     {
148         // --- Setup
149         setupSnapshotsRemoteRepo();
150         setupCleanInternalRepo();
151 
152         String resourcePath = "org/apache/archiva/test/3.0-SNAPSHOT/test-3.0-20070822.033400-42.jar";
153         String expectedRemoteContents = "archiva-test-3.0-20070822.033400-42|jar-remote-contents";
154         String expectedManagedContents = null;
155         File remoteFile = populateRepo( remoteSnapshots, resourcePath, expectedRemoteContents );
156 
157         if ( hasManagedCopy )
158         {
159             expectedManagedContents = "archiva-test-3.0-20070822.033400-42|jar-managed-contents";
160             File managedFile = populateRepo( repoRootInternal, resourcePath, expectedManagedContents );
161             managedFile.setLastModified( remoteFile.lastModified() + deltaManagedToRemoteTimestamp );
162         }
163 
164         setupSnapshotConnector( REPOID_INTERNAL, remoteSnapshots, snapshotsPolicy );
165         saveConfiguration();
166 
167         // --- Execution
168         // process the response code later, not via an exception.
169         HttpUnitOptions.setExceptionsThrownOnErrorStatus( false );
170 
171         WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + resourcePath );
172         WebResponse response = sc.getResponse( request );
173 
174         // --- Verification
175 
176         switch ( expectation )
177         {
178             case EXPECT_MANAGED_CONTENTS:
179                 assertResponseOK( response );
180                 assertTrue( "Invalid Test Case: Can't expect managed contents with "
181                     + "test that doesn't have a managed copy in the first place.", hasManagedCopy );
182                 assertEquals( "Expected managed file contents", expectedManagedContents, response.getText() );
183                 break;
184             case EXPECT_REMOTE_CONTENTS:
185                 assertResponseOK( response );
186                 assertEquals( "Expected remote file contents", expectedRemoteContents, response.getText() );
187                 break;
188             case EXPECT_NOT_FOUND:
189                 assertResponseNotFound( response );
190                 assertManagedFileNotExists( repoRootInternal, resourcePath );
191                 break;
192         }
193     }
194 }