1 package org.apache.maven.archiva.webdav;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
33
34
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
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
168
169 HttpUnitOptions.setExceptionsThrownOnErrorStatus( false );
170
171 WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" + resourcePath );
172 WebResponse response = sc.getResponse( request );
173
174
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 }