diff Tests/Tests.py @ 342:bf8369ea3ff1

more tests of webdav
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 15 Oct 2020 17:34:01 +0200
parents 66a36befb208
children bed0ab3a1391
line wrap: on
line diff
--- a/Tests/Tests.py	Wed Oct 14 19:55:26 2020 +0200
+++ b/Tests/Tests.py	Thu Oct 15 17:34:01 2020 +0200
@@ -5330,7 +5330,7 @@
                 if s['Status'] != 'Pending':
                     return s
                 else:
-                    time.sleep(0.1)
+                    time.sleep(0.01)
         
         instance = UploadInstance(_REMOTE, 'DummyCT.dcm')
         sopClassUid = '1.2.840.10008.5.1.4.1.1.4'
@@ -5414,7 +5414,7 @@
                 if s['Status'] != 'Pending':
                     return s
                 else:
-                    time.sleep(0.1)
+                    time.sleep(0.01)
 
         i = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
         self.assertEqual(1, len(DoGet(_REMOTE, '/instances')))
@@ -6017,16 +6017,43 @@
     def test_webdav(self):
         self.assertRaises(Exception, lambda: DoPropFind(_REMOTE, '/webdav/', 2))
 
-        xml = DoPropFind(_REMOTE, '/webdav/', 1)
-        pprint.pprint(xml.keys())
-        print(xml['/webdav/'].toprettyxml())
+        for suffix in [ '', '/' ]:
+            f = DoPropFind(_REMOTE, '/webdav' + suffix, 0)
+            self.assertEqual(1, len(f))
+            self.assertTrue('/webdav/' in f.keys())
+            self.assertTrue(f['/webdav/']['folder'])
+            self.assertEqual('webdav', f['/webdav/']['displayname'])
+
+            f = DoPropFind(_REMOTE, '/webdav' + suffix, 1)
+            self.assertEqual(6, len(f))
+            self.assertTrue(f['/webdav/']['folder'])
+            self.assertEqual('webdav', f['/webdav/']['displayname'])
+            
+            for i in [ 'by-dates', 'by-patients', 'by-studies', 'by-uids', 'uploads' ]:
+                self.assertTrue(f['/webdav/%s' % i]['folder'])
+                self.assertEqual(i, f['/webdav/%s' % i]['displayname'])
+
+                for depth in [ 0, 1 ]:
+                    for suffix2 in [ '', '/' ]:
+                        g = DoPropFind(_REMOTE, '/webdav/%s%s' % (i, suffix2), depth)
+
+                        if i == 'uploads':
+                            # Empty folders might still exist in "/uploads/"
+                            self.assertTrue('/webdav/uploads/' in g)
+                            self.assertEqual('uploads', g['/webdav/uploads/']['displayname'])
+                            for j in g.items():
+                                self.assertTrue(g.items()[0][1]['folder'])
+                        else:
+                            self.assertEqual(1, len(g))
+                            self.assertEqual('/webdav/%s/' % i, g.items()[0][0])
+                            self.assertTrue(g.items()[0][1]['folder'])
+                            self.assertEqual(i, g.items()[0][1]['displayname'])
         
-        #print(xml.toprettyxml())
-        #for i in xml.getElementsByTagName('D:response'):
-        #    print(i.getElementsByTagName('D:href')[0].childNodes[0].data)
-        #    print(i.getElementsByTagName('D:prop')[0].toprettyxml())
-
-
+        self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
+        with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
+            DoPut(_REMOTE, '/webdav/uploads/dummy', f.read(), 'text/plain')        
+
+        while len(DoGet(_REMOTE, '/patients')) == 0:
+            time.sleep(0.01)
+        self.assertEqual(1, len(DoGet(_REMOTE, '/patients')))
             
-        self.assertEqual(0, len(DoGet(_REMOTE, '/patients')))
-        UploadInstance(_REMOTE, 'Comunix/Ct/IM-0001-0001.dcm')