]> source.dussan.org Git - archiva.git/blob
9291601e7b3a8441d625594bbe7961dcdb129178
[archiva.git] /
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 java.io.File;
23 import org.apache.commons.io.FileUtils;
24 import org.apache.jackrabbit.webdav.DavException;
25 import org.apache.jackrabbit.webdav.DavResource;
26 import org.apache.jackrabbit.webdav.DavServletResponse;
27 import org.apache.jackrabbit.webdav.DavSession;
28 import org.apache.jackrabbit.webdav.lock.ActiveLock;
29 import org.apache.jackrabbit.webdav.lock.LockInfo;
30 import org.apache.jackrabbit.webdav.lock.LockManager;
31 import org.apache.jackrabbit.webdav.lock.Scope;
32 import org.apache.jackrabbit.webdav.lock.SimpleLockManager;
33 import org.apache.jackrabbit.webdav.lock.Type;
34 import org.apache.maven.archiva.webdav.util.MimeTypes;
35 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
36 import org.codehaus.plexus.spring.PlexusToSpringUtils;
37 import quicktime.std.qtcomponents.SCInfo;
38
39
40 public class DavResourceTest extends PlexusInSpringTestCase
41 {
42     private DavSession session;
43     
44     private MimeTypes mimeTypes;
45     
46     private ArchivaDavResourceLocator resourceLocator;
47     
48     private ArchivaDavResourceFactory factory;
49     
50     private File baseDir;
51     
52     private final String REPOPATH = "/myresource.jar";
53     
54     private final File myResource = new File(baseDir, REPOPATH);
55     
56     private DavResource resource;
57     
58     private LockManager lockManager;
59     
60     @Override
61     protected void setUp()
62         throws Exception
63     {
64         super.setUp();
65         session = new ArchivaDavSession();
66         mimeTypes = (MimeTypes)getApplicationContext().getBean(PlexusToSpringUtils.buildSpringId(MimeTypes.class));
67         baseDir = new File("target/DavResourceTest");
68         baseDir.mkdirs();
69         myResource.createNewFile();
70         resourceLocator = (ArchivaDavResourceLocator)new ArchivaDavLocatorFactory().createResourceLocator("/", REPOPATH);
71         resource = getDavResource(REPOPATH, myResource);
72         lockManager = new SimpleLockManager();
73         resource.addLockManager(lockManager);
74     }
75
76     @Override
77     protected void tearDown()
78         throws Exception
79     {
80         super.tearDown();
81         release(mimeTypes);
82         FileUtils.deleteDirectory(baseDir);
83     }
84     
85     private DavResource getDavResource(String logicalPath, File file)
86     {
87         return new ArchivaDavResource(logicalPath, file.getAbsolutePath(), mimeTypes, session, resourceLocator, null);
88     }
89     
90     public void testIsLockable()
91     {
92         assertTrue(resource.isLockable(Type.WRITE, Scope.EXCLUSIVE));
93         assertFalse(resource.isLockable(Type.WRITE, Scope.SHARED));
94     }
95     
96     public void testLock()
97         throws Exception
98     {
99         assertEquals(0, resource.getLocks().length);
100        
101         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
102         lockManager.createLock(info, resource);
103         
104         assertEquals(1, resource.getLocks().length);
105     }
106     
107     public void testLockIfResourceUnlockable()
108         throws Exception
109     {
110         assertEquals(0, resource.getLocks().length);
111        
112         LockInfo info = new LockInfo(Scope.SHARED, Type.WRITE, "/", 0, false);
113         try
114         {
115             lockManager.createLock(info, resource);
116             fail("Did not throw dav exception");
117         }
118         catch (Exception e)
119         {
120             //Simple lock manager will die
121         }
122         assertEquals(0, resource.getLocks().length); 
123     }
124     
125     public void testGetLock()
126         throws Exception
127     {
128         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
129         lockManager.createLock(info, resource);
130         
131         assertEquals(1, resource.getLocks().length);
132         
133         //Lock should exist
134         assertNotNull(resource.getLock(Type.WRITE, Scope.EXCLUSIVE));
135         
136         //Lock should not exist
137         assertNull(resource.getLock(Type.WRITE, Scope.SHARED));
138     }
139     
140     
141     public void testRefreshLockThrowsExceptionIfNoLockIsPresent()
142         throws Exception
143     {
144         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
145         
146         assertEquals(0, resource.getLocks().length);       
147         
148         try
149         {
150             lockManager.refreshLock(info, "notoken", resource);
151             fail("Did not throw dav exception");
152         }
153         catch (DavException e)
154         {
155             assertEquals(DavServletResponse.SC_PRECONDITION_FAILED, e.getErrorCode());
156         }
157         
158         assertEquals(0, resource.getLocks().length);
159     }
160     
161     public void testRefreshLock()
162         throws Exception
163     {
164         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
165         
166         assertEquals(0, resource.getLocks().length);
167         
168         lockManager.createLock(info, resource);
169         
170         assertEquals(1, resource.getLocks().length);
171         
172         ActiveLock lock = resource.getLocks()[0];
173
174         lockManager.refreshLock(info, lock.getToken(), resource);
175         
176         assertEquals(1, resource.getLocks().length);
177     }
178     
179     public void testUnlock()
180         throws Exception
181     {
182         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
183         
184         assertEquals(0, resource.getLocks().length);
185         
186         lockManager.createLock(info, resource);
187         
188         assertEquals(1, resource.getLocks().length);
189         
190         ActiveLock lock = resource.getLocks()[0];
191
192         lockManager.releaseLock(lock.getToken(), resource);
193         
194         assertEquals(0, resource.getLocks().length);
195     }    
196     
197     public void testUnlockThrowsDavExceptionIfNotLocked()
198         throws Exception
199     {
200         LockInfo info = new LockInfo(Scope.EXCLUSIVE, Type.WRITE, "/", 0, false);
201         
202         assertEquals(0, resource.getLocks().length);
203         
204         lockManager.createLock(info, resource);
205         
206         assertEquals(1, resource.getLocks().length);
207
208         try
209         {
210             lockManager.releaseLock("BLAH", resource);
211             fail("Did not throw DavException");
212         }
213         catch (DavException e)
214         {
215             assertEquals(DavServletResponse.SC_LOCKED, e.getErrorCode());
216         }
217         
218         assertEquals(1, resource.getLocks().length);      
219     }
220     
221     public void testUnlockThrowsDavExceptionIfResourceNotLocked()
222         throws Exception
223     {        
224         assertEquals(0, resource.getLocks().length);
225
226         try
227         {
228             lockManager.releaseLock("BLAH", resource);
229             fail("Did not throw DavException");
230         }
231         catch (DavException e)
232         {
233             assertEquals(DavServletResponse.SC_PRECONDITION_FAILED, e.getErrorCode());
234         }
235         
236         assertEquals(0, resource.getLocks().length);      
237     }
238 }