comparison Plugins/WebDav/Run.py @ 339:44ab919be2e9

cont webdav tests
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 14 Oct 2020 14:05:33 +0200
parents edaeb57bf01f
children 60775134a406
comparison
equal deleted inserted replaced
338:edaeb57bf01f 339:44ab919be2e9
27 import pprint 27 import pprint
28 import re 28 import re
29 import sys 29 import sys
30 import unittest 30 import unittest
31 31
32 # https://stackoverflow.com/a/49336105/881731
33 if ((3, 0) <= sys.version_info <= (3, 9)):
34 from urllib.parse import unquote
35 elif ((2, 0) <= sys.version_info <= (2, 9)):
36 from urlparse import unquote
37
32 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Tests')) 38 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Tests'))
33 from Toolbox import * 39 from Toolbox import *
34 40
35 41
36 ## 42 ##
198 self.assertEqual(1, len(WEBDAV.ls('/webdav/by-uids/'))) 204 self.assertEqual(1, len(WEBDAV.ls('/webdav/by-uids/')))
199 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True))) 205 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True)))
200 self.assertEqual(0, len(DoGet(ORTHANC, '/instances'))) 206 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
201 207
202 i = UploadInstance(ORTHANC, 'DummyCT.dcm')['ID'] 208 i = UploadInstance(ORTHANC, 'DummyCT.dcm')['ID']
203 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) 209 tags = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i)
204 studyUid = instance['StudyInstanceUID'] 210 studyUid = tags['StudyInstanceUID']
205 seriesUid = instance['SeriesInstanceUID'] 211 seriesUid = tags['SeriesInstanceUID']
206 sopUid = instance['SOPInstanceUID'] 212 sopUid = tags['SOPInstanceUID']
207 213
208 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', False))) 214 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', False)))
209 self.assertEqual(1, len(ListFiles('/webdav/by-uids/%s/' % studyUid, False))) 215 self.assertEqual(1, len(ListFiles('/webdav/by-uids/%s/' % studyUid, False)))
210 self.assertEqual(2, len(ListFiles('/webdav/by-uids/%s/%s/' % (studyUid, seriesUid), False))) 216 self.assertEqual(2, len(ListFiles('/webdav/by-uids/%s/%s/' % (studyUid, seriesUid), False)))
211 217
238 ['MainDicomTags']['SeriesInstanceUID']) 244 ['MainDicomTags']['SeriesInstanceUID'])
239 245
240 self.assertEqual(1, len(DoGet(ORTHANC, '/instances'))) 246 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
241 WEBDAV.delete('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) 247 WEBDAV.delete('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid))
242 self.assertEqual(0, len(DoGet(ORTHANC, '/instances'))) 248 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
243 249 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True)))
250
251
252 def test_by_patients(self):
253 self.assertEqual(0, len(ListFiles('/webdav/by-dates/', True)))
254 self.assertEqual(0, len(ListFiles('/webdav/by-patients/', True)))
255 self.assertEqual(0, len(ListFiles('/webdav/by-studies/', True)))
256 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True)))
257
258 self.assertEqual(1, len(WEBDAV.ls('/webdav/by-patients/')))
259 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
260
261 i = UploadInstance(ORTHANC, 'DummyCT.dcm')['ID']
262 tags = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i)
263 patient = '%s - %s' % (tags['PatientID'], tags['PatientName'])
264 study = '%s - %s' % (tags['StudyDate'], tags['StudyDescription'])
265 series = '%s - %s' % (tags['Modality'], tags['SeriesDescription'])
266 self.assertEqual('ozp00SjY2xG - KNIX', patient)
267 self.assertEqual('20070101 - Knee (R)', study)
268 self.assertEqual('MR - AX. FSE PD', series)
269
270 self.assertEqual(1, len(ListFiles('/webdav/by-dates/', True)))
271 self.assertEqual(1, len(ListFiles('/webdav/by-patients/', True)))
272 self.assertEqual(1, len(ListFiles('/webdav/by-studies/', True)))
273 self.assertEqual(3, len(ListFiles('/webdav/by-uids/', True)))
274
275 self.assertEqual(0, len(ListFiles('/webdav/by-patients/', False)))
276 self.assertEqual(2, len(WEBDAV.ls('/webdav/by-patients/')))
277 self.assertEqual(0, len(ListFiles('/webdav/by-patients/%s' % patient, False)))
278 self.assertEqual(2, len(WEBDAV.ls('/webdav/by-patients/%s' % patient)))
279 self.assertEqual(0, len(ListFiles('/webdav/by-patients/%s/%s' % (patient, study), False)))
280 self.assertEqual(2, len(WEBDAV.ls('/webdav/by-patients/%s/%s' % (patient, study))))
281
282 folder = '/webdav/by-patients/%s/%s/%s' % (patient, study, series)
283 self.assertEqual(1, len(ListFiles(folder, False)))
284 self.assertEqual(2, len(WEBDAV.ls(folder)))
285 self.assertEqual('%s/%s.dcm' % (folder, i), unquote(ListFiles(folder, False) [0]))
286
287 a = DownloadFile('%s/%s.dcm' % (folder, i))
288 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
289 self.assertEqual(a, f.read())
290
291 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
292 WEBDAV.delete('%s/%s.dcm' % (folder, i))
293 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
294
295 self.assertEqual(0, len(ListFiles('/webdav/by-dates/', True)))
296 self.assertEqual(0, len(ListFiles('/webdav/by-patients/', True)))
297 self.assertEqual(0, len(ListFiles('/webdav/by-studies/', True)))
298 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True)))
299
300
301 def test_by_studies(self):
302 self.assertEqual(0, len(ListFiles('/webdav/by-studies/', True)))
303 self.assertEqual(1, len(WEBDAV.ls('/webdav/by-patients/')))
304 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
305
306 i = UploadInstance(ORTHANC, 'DummyCT.dcm')['ID']
307 tags = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i)
308 study = '%s - %s - %s' % (tags['PatientID'], tags['PatientName'], tags['StudyDescription'])
309 series = '%s - %s' % (tags['Modality'], tags['SeriesDescription'])
310 self.assertEqual('ozp00SjY2xG - KNIX - Knee (R)', study)
311 self.assertEqual('MR - AX. FSE PD', series)
312
313 self.assertEqual(1, len(ListFiles('/webdav/by-studies/', True)))
314
315 self.assertEqual(0, len(ListFiles('/webdav/by-studies/', False)))
316 self.assertEqual(2, len(WEBDAV.ls('/webdav/by-studies/')))
317 self.assertEqual(0, len(ListFiles('/webdav/by-studies/%s' % study, False)))
318 self.assertEqual(2, len(WEBDAV.ls('/webdav/by-studies/%s' % study)))
319
320 folder = '/webdav/by-studies/%s/%s' % (study, series)
321 self.assertEqual(1, len(ListFiles(folder, False)))
322 self.assertEqual(2, len(WEBDAV.ls(folder)))
323 self.assertEqual('%s/%s.dcm' % (folder, i), unquote(ListFiles(folder, False) [0]))
324
325 a = DownloadFile('%s/%s.dcm' % (folder, i))
326 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f:
327 self.assertEqual(a, f.read())
328
329 self.assertEqual(1, len(DoGet(ORTHANC, '/instances')))
330 WEBDAV.delete('%s/%s.dcm' % (folder, i))
331 self.assertEqual(0, len(DoGet(ORTHANC, '/instances')))
332 self.assertEqual(0, len(ListFiles('/webdav/by-studies/', True)))
333
334
335
336
244 try: 337 try:
245 print('\nStarting the tests...') 338 print('\nStarting the tests...')
246 unittest.main(argv = [ sys.argv[0] ] + args.options) 339 unittest.main(argv = [ sys.argv[0] ] + args.options)
247 340
248 finally: 341 finally: