diff Plugins/WebDav/Run.py @ 342:bf8369ea3ff1

more tests of webdav
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 15 Oct 2020 17:34:01 +0200
parents 60775134a406
children 203af01474b6
line wrap: on
line diff
--- a/Plugins/WebDav/Run.py	Wed Oct 14 19:55:26 2020 +0200
+++ b/Plugins/WebDav/Run.py	Thu Oct 15 17:34:01 2020 +0200
@@ -158,6 +158,9 @@
         self.assertEqual(0, patients[0].size)
         self.assertEqual('', patients[0].contenttype)
 
+        self.assertRaises(Exception, lambda: WEBDAV.delete('/webdav/nope'))
+        self.assertRaises(Exception, lambda: WEBDAV.delete('/webdav/by-uids'))
+
 
     def test_upload(self):
         self.assertEqual(0, len(ListFiles('/webdav/uploads/', True)))
@@ -221,6 +224,11 @@
         self.assertTrue(('/webdav/by-uids/%s/%s/series.json' % (studyUid, seriesUid)) in content)
         self.assertTrue(('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) in content)
 
+        # Deleting the virtual files "study|series.json" has no
+        # effect, but is needed for recursive DELETE in some file explorers
+        WEBDAV.delete('/webdav/by-uids/%s/study.json' % studyUid)
+        WEBDAV.delete('/webdav/by-uids/%s/%s/series.json' % (studyUid, seriesUid))
+
         info = GetFileInfo('/webdav/by-uids/%s/study.json' % studyUid)
         self.assertEqual(info.contenttype, 'application/json')
         
@@ -377,6 +385,31 @@
         self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
         self.assertEqual(0, len(ListFiles('/webdav/by-dates/', True)))
 
+
+    def test_delete_folder(self):
+        # These deletes should have no effect
+        UploadInstance(ORTHANC, 'DummyCT.dcm')
+        self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
+        WEBDAV.delete('/webdav/by-uids/1.2.840.113619.2.176.2025.1499492.7391.1171285944.390/study.json')
+        WEBDAV.delete('/webdav/by-uids/1.2.840.113619.2.176.2025.1499492.7391.1171285944.390/1.2.840.113619.2.176.2025.1499492.7391.1171285944.394/series.json')
+        WEBDAV.delete('/webdav/by-dates/2007/2007-02')
+        WEBDAV.delete('/webdav/by-dates/2006')
+        self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
+
+        for path in [
+                '/webdav/by-uids/1.2.840.113619.2.176.2025.1499492.7391.1171285944.390/1.2.840.113619.2.176.2025.1499492.7391.1171285944.394/1.2.840.113619.2.176.2025.1499492.7040.1171286242.109.dcm',
+                '/webdav/by-patients/ozp00SjY2xG - KNIX/20070101 - Knee (R)/MR - AX.  FSE PD/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d.dcm',
+                '/webdav/by-studies/ozp00SjY2xG - KNIX - Knee (R)/MR - AX.  FSE PD/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d.dcm',
+                '/webdav/by-dates/2007/2007-01/ozp00SjY2xG - KNIX - Knee (R)/MR - AX.  FSE PD/66a662ce-7430e543-bad44d47-0dc5a943-ec7a538d.dcm',
+                ]:
+            tokens = path.split('/')
+            for i in range(4, len(tokens) + 1):
+                p = '/'.join(tokens[0:i])
+                UploadInstance(ORTHANC, 'DummyCT.dcm')
+                self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))        
+                WEBDAV.delete(p)
+                self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
+
         
 try:
     print('\nStarting the tests...')