]> source.dussan.org Git - archiva.git/blob
27cda9728769fdafe9b0151e2692966901d62ad1
[archiva.git] /
1 package org.apache.archiva.policies;
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 junit.framework.TestCase;
23 import org.apache.archiva.common.filelock.DefaultFileLockManager;
24 import org.apache.archiva.policies.urlcache.UrlFailureCache;
25 import org.apache.archiva.repository.storage.FilesystemStorage;
26 import org.apache.archiva.repository.storage.StorageAsset;
27 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.springframework.test.context.ContextConfiguration;
31
32 import javax.inject.Inject;
33 import javax.inject.Named;
34 import java.io.IOException;
35 import java.nio.file.Paths;
36 import java.util.Locale;
37 import java.util.MissingResourceException;
38 import java.util.Properties;
39
40 /**
41  * CachedFailuresPolicyTest
42  *
43  *
44  */
45 @RunWith( ArchivaSpringJUnit4ClassRunner.class )
46 @ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
47 public class CachedFailuresPolicyTest
48     extends TestCase
49 {
50
51
52     @Inject
53     private UrlFailureCache urlFailureCache;
54
55     private FilesystemStorage filesystemStorage;
56
57     @Inject
58     @Named( value = "preDownloadPolicy#cache-failures" )
59     DownloadPolicy downloadPolicy;
60
61     private DownloadPolicy lookupPolicy()
62         throws Exception
63     {
64         return downloadPolicy;
65     }
66
67     private StorageAsset getFile() throws IOException {
68         if (filesystemStorage==null) {
69             filesystemStorage = new FilesystemStorage(Paths.get("target/cache-failures"), new DefaultFileLockManager());
70         }
71         return filesystemStorage.getAsset( getName() + ".txt" );
72     }
73
74     private Properties createRequest()
75     {
76         Properties request = new Properties();
77
78         return request;
79     }
80
81     @Test
82     public void testPolicyNo()
83         throws Exception
84     {
85         DownloadPolicy policy = lookupPolicy();
86         StorageAsset localFile = getFile();
87         Properties request = createRequest();
88
89         request.setProperty( "url", "http://a.bad.hostname.maven.org/path/to/resource.txt" );
90
91         policy.applyPolicy( CachedFailuresPolicy.NO, request, localFile );
92     }
93
94     @Test( expected = PolicyViolationException.class )
95     public void testPolicyYes()
96         throws Exception
97     {
98
99         DownloadPolicy policy = lookupPolicy();
100         StorageAsset localFile = getFile();
101         Properties request = createRequest();
102         // make unique name
103         String url = "http://a.bad.hostname.maven.org/path/to/resource"+ System.currentTimeMillis() +".txt";
104         
105         request.setProperty( "url", url );
106
107         // should not fail
108         try {
109             policy.applyPolicy(CachedFailuresPolicy.YES, request, localFile);
110         } catch (PolicyViolationException e) {
111             // Converting to runtime exception, because it should be thrown later
112             throw new RuntimeException(e);
113         }
114         // status Yes Not In cache
115
116         // Yes in Cache
117         
118         urlFailureCache.cacheFailure( url );
119
120         request.setProperty( "url", url );
121
122         policy.applyPolicy( CachedFailuresPolicy.YES, request, localFile );       
123     }
124
125     @Test
126     public void testNamesAndDescriptions() throws Exception {
127         DownloadPolicy policy = lookupPolicy();
128         assertEquals("Cache Failures Policy", policy.getName());
129         assertTrue(policy.getDescription(Locale.US).contains("if download failures will be cached"));
130         assertEquals("Yes", policy.getOptionName(Locale.US, StandardOption.YES));
131         assertEquals("No", policy.getOptionName(Locale.US, StandardOption.NO));
132         assertTrue(policy.getOptionDescription(Locale.US, StandardOption.YES).contains("failures are cached and download is not attempted"));
133         assertTrue(policy.getOptionDescription(Locale.US, StandardOption.NO).contains("failures are not cached"));
134         try {
135             policy.getOptionName(Locale.US, StandardOption.NOOP);
136             // Exception should be thrown
137             assertTrue(false);
138         } catch (MissingResourceException e) {
139             //
140         }
141
142     }
143 }