comparison Tests/Tests.py @ 523:767840cb4d3f

test /tools/labels
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 08 Apr 2023 10:13:11 +0200
parents fce9e90acdc2
children 0699890b9961 b60a0cc28c34
comparison
equal deleted inserted replaced
522:fce9e90acdc2 523:767840cb4d3f
9329 self.assertEqual(upload1["ParentStudy"], upload2["ParentStudy"]) 9329 self.assertEqual(upload1["ParentStudy"], upload2["ParentStudy"])
9330 self.assertEqual(2, len(changes2)) 9330 self.assertEqual(2, len(changes2))
9331 self.assertEqual(changes1[0], changes2[0]) 9331 self.assertEqual(changes1[0], changes2[0])
9332 9332
9333 def test_labels(self): 9333 def test_labels(self):
9334 def CheckAllLabels(expected):
9335 actual = DoGet(_REMOTE, '/tools/labels')
9336 self.assertEqual(len(actual), len(expected))
9337 for i in expected:
9338 self.assertTrue(i in actual)
9339 for i in actual:
9340 self.assertTrue(i in expected)
9341
9334 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and 9342 if (IsOrthancVersionAbove(_REMOTE, 1, 12, 0) and
9335 DoGet(_REMOTE, '/system') ['HasLabels']): 9343 DoGet(_REMOTE, '/system') ['HasLabels']):
9336 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID'] 9344 u = UploadInstance(_REMOTE, 'DummyCT.dcm')['ID']
9337 patient = DoGet(_REMOTE, '/instances/%s/patient' % u) ['ID'] 9345 patient = DoGet(_REMOTE, '/instances/%s/patient' % u) ['ID']
9338 study = DoGet(_REMOTE, '/instances/%s/study' % u) ['ID'] 9346 study = DoGet(_REMOTE, '/instances/%s/study' % u) ['ID']
9343 '/studies/%s' % study, 9351 '/studies/%s' % study,
9344 '/patients/%s' % patient ]: 9352 '/patients/%s' % patient ]:
9345 9353
9346 # no tags by default 9354 # no tags by default
9347 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels'])) 9355 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
9356 CheckAllLabels([])
9348 9357
9349 # 404 if requesting a tag that does apply for a resource 9358 # 404 if requesting a tag that does apply for a resource
9350 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base)) 9359 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
9351 9360
9352 # delete a non existing tag does not generate an error 9361 # delete a non existing tag does not generate an error
9358 9367
9359 # add a tag 9368 # add a tag
9360 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base)) 9369 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
9361 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) 9370 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
9362 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0]) 9371 self.assertEqual('hello', DoGet(_REMOTE, base) ['Labels'][0])
9372 CheckAllLabels([ 'hello' ])
9363 9373
9364 # double tagging does not generate any error 9374 # double tagging does not generate any error
9365 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base)) 9375 self.assertEqual('', DoPut(_REMOTE, '%s/labels/hello' % base))
9366 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base)) 9376 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
9367 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) 9377 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
9372 self.assertEqual('', DoGet(_REMOTE, '%s/labels/world' % base)) 9382 self.assertEqual('', DoGet(_REMOTE, '%s/labels/world' % base))
9373 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base)) 9383 self.assertEqual('', DoGet(_REMOTE, '%s/labels/hello' % base))
9374 self.assertEqual(2, len(DoGet(_REMOTE, base) ['Labels'])) 9384 self.assertEqual(2, len(DoGet(_REMOTE, base) ['Labels']))
9375 self.assertIn(DoGet(_REMOTE, base) ['Labels'][0], ['hello', 'world']) 9385 self.assertIn(DoGet(_REMOTE, base) ['Labels'][0], ['hello', 'world'])
9376 self.assertIn(DoGet(_REMOTE, base) ['Labels'][1], ['hello', 'world']) 9386 self.assertIn(DoGet(_REMOTE, base) ['Labels'][1], ['hello', 'world'])
9377 9387 CheckAllLabels([ 'hello', 'world' ])
9378 # list all tags defined in the system (not only on this resource)
9379 9388
9380 # delete the first tag 9389 # delete the first tag
9381 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base)) 9390 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/hello' % base))
9382 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels'])) 9391 self.assertEqual(1, len(DoGet(_REMOTE, base) ['Labels']))
9383 self.assertEqual('world', DoGet(_REMOTE, base) ['Labels'][0]) 9392 self.assertEqual('world', DoGet(_REMOTE, base) ['Labels'][0])
9384 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base)) 9393 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/hello' % base))
9394 CheckAllLabels([ 'world' ])
9385 9395
9386 # delete the second tag 9396 # delete the second tag
9387 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/world' % base)) 9397 self.assertEqual('', DoDelete(_REMOTE, '%s/labels/world' % base))
9388 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels'])) 9398 self.assertEqual(0, len(DoGet(_REMOTE, base) ['Labels']))
9389 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/world' % base)) 9399 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '%s/labels/world' % base))
9400 CheckAllLabels([ ])
9390 9401
9391 # test all valid chars 9402 # test all valid chars
9392 self.assertEqual('', DoPut(_REMOTE, '%s/labels/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.' % base)) 9403 VALID = r'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'
9404 self.assertEqual('', DoPut(_REMOTE, '%s/labels/%s' % (base, VALID)))
9405 CheckAllLabels([ VALID ])
9406 DoDelete(_REMOTE, '%s/labels/%s' % (base, VALID))
9407 CheckAllLabels([ ])
9408
9393 else: 9409 else:
9394 print("Your database backend doesn't support labels") 9410 print("Your database backend doesn't support labels")
9395 9411
9396 def test_find_labels(self): 9412 def test_find_labels(self):
9397 def Execute(labels, constraint): 9413 def Execute(labels, constraint):