88import java .io .IOException ;
99import java .sql .SQLException ;
1010
11+ import javax .servlet .http .HttpServletResponse ;
12+
1113import org .apache .jackrabbit .webdav .DavConstants ;
14+ import org .apache .jackrabbit .webdav .DavMethods ;
1215import org .eclipse .jetty .util .StringUtil ;
1316import org .junit .Test ;
1417
@@ -91,13 +94,15 @@ public void testService() throws IOException, PersistenceException {
9194 testVERSIONCONTROL ();
9295
9396 testDELETE ();
97+
98+ testUNCHECKOUT ();
9499 }
95100
96101 public void testVERSIONCONTROL () throws IOException {
97102 File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
98103 try {
99104 MockServletResponse response = new MockServletResponse (tempFile );
100- MockServletRequest request = prepareRequest ("VERSION-CONTROL" , "/five.pdf" );
105+ MockServletRequest request = prepareRequest (DavMethods . METHOD_VERSION_CONTROL , "/five.pdf" );
101106 testSubject .service (request , response );
102107
103108 } finally {
@@ -110,7 +115,7 @@ public void testREPORT() throws IOException {
110115 File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
111116 try {
112117 MockServletResponse response = new MockServletResponse (tempFile );
113- MockServletRequest request = prepareRequest ("REPORT" , "/five.pdf" );
118+ MockServletRequest request = prepareRequest (DavMethods . METHOD_REPORT , "/five.pdf" );
114119 request .setBody ("""
115120<?xml version="1.0" encoding="utf-8" ?>
116121<ld:filter-files xmlns:a="DAV:" xmlns:ld="http://logicaldoc.com/ns" >
@@ -135,7 +140,7 @@ public void testCHECKIN() throws IOException, PersistenceException {
135140 assertEquals (AbstractDocument .DOC_UNLOCKED , doc .getStatus ());
136141
137142 MockServletResponse response = new MockServletResponse (tempFile );
138- MockServletRequest request = prepareRequest ("CHECKOUT" , "/five.pdf" );
143+ MockServletRequest request = prepareRequest (DavMethods . METHOD_CHECKOUT , "/five.pdf" );
139144 testSubject .service (request , response );
140145
141146 doc = docDao .findById (5L );
@@ -160,7 +165,7 @@ public void testLOCK() throws IOException, PersistenceException {
160165 assertEquals (AbstractDocument .DOC_UNLOCKED , doc .getStatus ());
161166
162167 MockServletResponse response = new MockServletResponse (tempFile );
163- MockServletRequest request = prepareRequest ("LOCK" , "/five.pdf" );
168+ MockServletRequest request = prepareRequest (DavMethods . METHOD_LOCK , "/five.pdf" );
164169 testSubject .service (request , response );
165170
166171 doc = docDao .findById (5L );
@@ -180,7 +185,7 @@ public void testOPTIONS() throws IOException {
180185 File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
181186 try {
182187 MockServletResponse response = new MockServletResponse (tempFile );
183- MockServletRequest request = prepareRequest ("OPTIONS" , "/five.pdf" );
188+ MockServletRequest request = prepareRequest (DavMethods . METHOD_OPTIONS , "/five.pdf" );
184189 testSubject .service (request , response );
185190
186191 assertTrue (response .getHeader ("Allow" ).contains ("POST" ));
@@ -196,7 +201,7 @@ public void testMKCOL() throws IOException {
196201 assertFalse (callPROPFIND ().contains (PREFIX + "/folder6/newfolder" ));
197202
198203 MockServletResponse response = new MockServletResponse (tempFile );
199- MockServletRequest request = prepareRequest ("MKCOL" , "/folder6/newfolder" );
204+ MockServletRequest request = prepareRequest (DavMethods . METHOD_MKCOL , "/folder6/newfolder" );
200205 testSubject .service (request , response );
201206
202207 assertTrue (callPROPFIND ().contains (PREFIX + "/folder6/newfolder" ));
@@ -212,7 +217,7 @@ public void testMOVE() throws IOException {
212217 assertFalse (callPROPFIND ().contains (PREFIX + "/folder6/moved.pdf" ));
213218
214219 MockServletResponse response = new MockServletResponse (tempFile );
215- MockServletRequest request = prepareRequest ("MOVE" , "/five.pdf" );
220+ MockServletRequest request = prepareRequest (DavMethods . METHOD_MOVE , "/five.pdf" );
216221 request .setHeader (DavConstants .HEADER_DESTINATION , PREFIX + "/folder6/moved.pdf" );
217222 testSubject .service (request , response );
218223
@@ -230,7 +235,7 @@ public void testCOPY() throws IOException {
230235 assertFalse (callPROPFIND ().contains (PREFIX + "/folder6/copied.pdf" ));
231236
232237 MockServletResponse response = new MockServletResponse (tempFile );
233- MockServletRequest request = prepareRequest ("COPY" , "/one.pdf" );
238+ MockServletRequest request = prepareRequest (DavMethods . METHOD_COPY , "/one.pdf" );
234239 request .setHeader (DavConstants .HEADER_DESTINATION , PREFIX + "/folder6/copied.pdf" );
235240 testSubject .service (request , response );
236241
@@ -239,7 +244,7 @@ public void testCOPY() throws IOException {
239244
240245 // Copy over existing file
241246 response = new MockServletResponse (tempFile );
242- request = prepareRequest ("COPY" , "/one.pdf" );
247+ request = prepareRequest (DavMethods . METHOD_COPY , "/one.pdf" );
243248 request .setHeader (DavConstants .HEADER_DESTINATION , PREFIX + "/folder6/copied.pdf" );
244249 testSubject .service (request , response );
245250
@@ -256,7 +261,7 @@ public void testDELETE() throws IOException {
256261 assertTrue (callPROPFIND ().contains (PREFIX + "/one.pdf" ));
257262
258263 MockServletResponse response = new MockServletResponse (tempFile );
259- MockServletRequest request = prepareRequest ("DELETE" , "/one.pdf" );
264+ MockServletRequest request = prepareRequest (DavMethods . METHOD_DELETE , "/one.pdf" );
260265 testSubject .service (request , response );
261266
262267 assertFalse (callPROPFIND ().contains (PREFIX + "/one.pdf" ));
@@ -270,7 +275,7 @@ private String callPROPFIND() throws IOException {
270275 try {
271276 MockServletResponse response = new MockServletResponse (tempFile );
272277
273- MockServletRequest request = prepareRequest ("PROPFIND" , "" );
278+ MockServletRequest request = prepareRequest (DavMethods . METHOD_PROPFIND , "" );
274279 //request.setHeader("Depth", "1");
275280 request .setHeader ("Accept-Encoding" , "identity" );
276281 request .setHeader ("Content-Type" , "application/xml; charset=utf-8" );
@@ -290,7 +295,7 @@ public void testPUT() throws IOException {
290295 assertFalse (callPROPFIND ().contains (PREFIX + "/folder6/newfile.pdf" ));
291296
292297 MockServletResponse response = new MockServletResponse (tempFile );
293- MockServletRequest request = prepareRequest ("PUT" , "/folder6/newfile1.pdf" );
298+ MockServletRequest request = prepareRequest (DavMethods . METHOD_PUT , "/folder6/newfile1.pdf" );
294299 request .setPayload (this .getClass ().getResourceAsStream ("/pdf1.pdf" ));
295300 testSubject .service (request , response );
296301
@@ -324,7 +329,7 @@ public void testGET() throws IOException {
324329 File tempFile = FileUtil .createTempFile ("webdav" , ".pdf" );
325330 try {
326331 MockServletResponse response = new MockServletResponse (tempFile );
327- MockServletRequest request = prepareRequest ("GET" , "/one.pdf" );
332+ MockServletRequest request = prepareRequest (DavMethods . METHOD_GET , "/one.pdf" );
328333 testSubject .service (request , response );
329334
330335 assertEquals (127810L , tempFile .length ());
@@ -337,7 +342,7 @@ public void testHEAD() throws IOException {
337342 File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
338343 try {
339344 MockServletResponse response = new MockServletResponse (tempFile );
340- MockServletRequest request = prepareRequest ("HEAD" , "/one.pdf" );
345+ MockServletRequest request = prepareRequest (DavMethods . METHOD_HEAD , "/one.pdf" );
341346 testSubject .service (request , response );
342347
343348 assertEquals ("d-1_1.0" , response .getHeaders ().get ("ETag" ));
@@ -350,12 +355,42 @@ public void testPROPPATCH() throws IOException {
350355 File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
351356 try {
352357 MockServletResponse response = new MockServletResponse (tempFile );
353- MockServletRequest request = prepareRequest ("PROPPATCH" , "/one.pdf" );
358+ MockServletRequest request = prepareRequest (DavMethods . METHOD_PROPPATCH , "/one.pdf" );
354359 testSubject .service (request , response );
355360 } finally {
356361 FileUtil .delete (tempFile );
357362 }
358363 }
364+
365+ public void testUNCHECKOUT () throws IOException , PersistenceException {
366+ File tempFile = FileUtil .createTempFile ("webdav" , ".xml" );
367+ try {
368+ Document doc = docDao .findById (7L );
369+ assertEquals (AbstractDocument .DOC_UNLOCKED , doc .getStatus ());
370+
371+ // SET THE STATUS TO CHECKOUT
372+ MockServletResponse response = new MockServletResponse (tempFile );
373+ MockServletRequest request = prepareRequest (DavMethods .METHOD_CHECKOUT , "/New error indexing documents.eml" );
374+ testSubject .service (request , response );
375+
376+ doc = docDao .findById (7L );
377+ assertEquals (AbstractDocument .DOC_CHECKED_OUT , doc .getStatus ());
378+
379+ // Perform the uncheckout
380+ response = new MockServletResponse (tempFile );
381+ request = prepareRequest (DavMethods .METHOD_UNCHECKOUT , "/New error indexing documents.eml" );
382+ testSubject .service (request , response );
383+
384+ // Check the response
385+ assertEquals (HttpServletResponse .SC_OK , response .getStatus ());
386+
387+ // Check the value
388+ doc = docDao .findById (7L );
389+ assertEquals (AbstractDocument .DOC_UNLOCKED , doc .getStatus ());
390+ } finally {
391+ FileUtil .delete (tempFile );
392+ }
393+ }
359394
360395 protected MockServletRequest prepareRequest (String method , String path ) {
361396 MockServletRequest request = new MockServletRequest (servletSession );
0 commit comments