comparison Plugins/DicomWeb/Run.py @ 559:87fc87897e7e

test_accept_negotiation for multipart DICOM
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 28 Jun 2023 11:18:45 +0200
parents 0ad170c7b6c8
children 2db7a9041507
comparison
equal deleted inserted replaced
558:0ad170c7b6c8 559:87fc87897e7e
35 35
36 import argparse 36 import argparse
37 import copy 37 import copy
38 import os 38 import os
39 import pprint 39 import pprint
40 import pydicom
40 import re 41 import re
41 import sys 42 import sys
42 import unittest 43 import unittest
43 import xml.dom.minidom 44 import xml.dom.minidom
44 from PIL import ImageChops 45 from PIL import ImageChops
1750 self.assertEqual(1, len(response)) 1751 self.assertEqual(1, len(response))
1751 self.assertEqual(2, len(response[0])) 1752 self.assertEqual(2, len(response[0]))
1752 self.assertEqual('application/dicom+xml', response[0][1]['Content-Type']) 1753 self.assertEqual('application/dicom+xml', response[0][1]['Content-Type'])
1753 xml.dom.minidom.parseString(response[0][0]) 1754 xml.dom.minidom.parseString(response[0][0])
1754 1755
1756 def CheckIsDicom(uri, accept):
1757 if accept != None:
1758 response = DoGetMultipart(ORTHANC, uri, headers = {
1759 'accept': accept
1760 }, returnHeaders = True)
1761 else:
1762 response = DoGetMultipart(ORTHANC, uri, returnHeaders = True)
1763 self.assertEqual(1, len(response))
1764 self.assertEqual(2, len(response[0]))
1765 self.assertEqual('application/dicom', response[0][1]['Content-Type'])
1766 pydicom.dcmread(BytesIO(response[0][0]), force=True)
1767
1755 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy'] 1768 study = UploadInstance(ORTHANC, 'ColorTestImageJ.dcm')['ParentStudy']
1756 studyUid = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID'] 1769 studyUid = DoGet(ORTHANC, '/studies/%s' % study)['MainDicomTags']['StudyInstanceUID']
1757 1770
1758 CheckIsJson('/dicom-web/studies/%s/metadata' % studyUid, None) 1771 CheckIsJson('/dicom-web/studies/%s/metadata' % studyUid, None)
1759 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'application/nope') 1772 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'application/nope')
1763 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml') 1776 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml')
1764 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/dicom+xml"') 1777 CheckIsXml('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/dicom+xml"')
1765 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/nope"') 1778 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type="application/nope"')
1766 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml; transfer-syntax=nope') 1779 CheckBadRequest('/dicom-web/studies/%s/metadata' % studyUid, 'multipart/related; type=application/dicom+xml; transfer-syntax=nope')
1767 1780
1781 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/nope')
1782 CheckIsDicom('/dicom-web/studies/%s' % studyUid, None)
1783 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related')
1784 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom')
1785 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type="application/dicom"')
1786 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/nope')
1787 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; transfer-syntax=*')
1788 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom; transfer-syntax=*')
1789 CheckBadRequest('/dicom-web/studies/%s' % studyUid, 'multipart/related; transfer-syntax=nope')
1790 CheckIsDicom('/dicom-web/studies/%s' % studyUid, 'multipart/related; type=application/dicom; transfer-syntax=1.2.840.10008.1.2.1')
1791
1768 1792
1769 try: 1793 try:
1770 print('\nStarting the tests...') 1794 print('\nStarting the tests...')
1771 unittest.main(argv = [ sys.argv[0] ] + args.options) 1795 unittest.main(argv = [ sys.argv[0] ] + args.options)
1772 1796