comparison Plugins/DicomWeb/Run.py @ 84:dc90b87471a8

tests for dicomweb
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 28 Jun 2016 09:10:19 +0200
parents 3f2170efa8d2
children 96a4cce190dc
comparison
equal deleted inserted replaced
83:3f2170efa8d2 84:dc90b87471a8
170 b = DoGet(ORTHANC, url).decode('utf-8', 'ignore') 170 b = DoGet(ORTHANC, url).decode('utf-8', 'ignore')
171 parts = re.findall(r'^Content-Length:\s*(\d+)\s*', b, re.IGNORECASE | re.MULTILINE) 171 parts = re.findall(r'^Content-Length:\s*(\d+)\s*', b, re.IGNORECASE | re.MULTILINE)
172 self.assertEqual(1, len(parts)) 172 self.assertEqual(1, len(parts))
173 self.assertEqual(os.path.getsize(GetDatabasePath('Phenix/IM-0001-0001.dcm')), int(parts[0])) 173 self.assertEqual(os.path.getsize(GetDatabasePath('Phenix/IM-0001-0001.dcm')), int(parts[0]))
174 174
175 def test_server_get(self):
176 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
177
178 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/servers')))
179 self.assertTrue('sample' in DoGet(ORTHANC, '/dicom-web/servers'))
180
181 sample = DoGet(ORTHANC, '/dicom-web/servers/sample')
182 self.assertEqual(3, len(sample))
183 self.assertTrue('stow' in sample)
184 self.assertTrue('retrieve' in sample)
185 self.assertTrue('get' in sample)
186
187 # application/dicom+xml
188 self.assertEqual(2, len(re.findall('^--', DoGet(ORTHANC, '/dicom-web/studies'), re.MULTILINE)))
189 self.assertEqual(2, len(re.findall('^--', DoPost(ORTHANC, '/dicom-web/servers/sample/get',
190 { 'Uri' : '/studies' }), re.MULTILINE)))
191
192 # application/dicom+json
193 self.assertEqual(1, len(DoGet(ORTHANC, '/dicom-web/studies', headers = { 'Accept' : 'application/json' })))
194 self.assertEqual(1, len(DoPost(ORTHANC, '/dicom-web/servers/sample/get',
195 { 'Uri' : '/studies',
196 'HttpHeaders' : { 'Accept' : 'application/json' }})))
197
198
199 def test_server_stow(self):
200 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
201
202 self.assertRaises(Exception, lambda:
203 DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
204 { 'Resources' : [ 'nope' ]})) # inexisting resource
205
206 self.assertEqual(0, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
207 { 'Resources' : [ 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17' ]}))) # patient
208
209 self.assertEqual(0, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
210 { 'Resources' : [ '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918' ]}))) # study
211
212 self.assertEqual(0, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
213 { 'Resources' : [ '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285' ]}))) # series
214
215 self.assertEqual(0, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
216 { 'Resources' : [ 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ]}))) # instance
217
218 self.assertEqual(0, len(DoPost(ORTHANC, '/dicom-web/servers/sample/stow',
219 { 'Resources' : [
220 'ca29faea-b6a0e17f-067743a1-8b778011-a48b2a17',
221 '0a9b3153-2512774b-2d9580de-1fc3dcf6-3bd83918',
222 '6de73705-c4e65c1b-9d9ea1b5-cabcd8e7-f15e4285',
223 'c8df6478-d7794217-0f11c293-a41237c9-31d98357' ]}))) # altogether
224
225
226 def test_server_retrieve(self):
227 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0001.dcm')
228 UploadInstance(ORTHANC, 'Knee/T1/IM-0001-0002.dcm')
229 UploadInstance(ORTHANC, 'Knee/T2/IM-0001-0001.dcm')
230
231 self.assertRaises(Exception, lambda:
232 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
233 { 'Resources' : [ { 'Study' : 'nope' } ]})) # inexisting resource
234
235 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
236 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881' } ] })
237 self.assertEqual(3, len(t['Instances']))
238
239 # Missing "Study" field
240 self.assertRaises(Exception, lambda:
241 DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
242 { 'Resources' : [ { 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ]}))
243
244 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
245 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
246 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
247 self.assertEqual(2, len(t['Instances']))
248
249 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
250 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
251 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' } ] })
252 self.assertEqual(1, len(t['Instances']))
253
254 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
255 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
256 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350' },
257 { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
258 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081908564160709' } ] })
259 self.assertEqual(3, len(t['Instances']))
260
261 t = DoPost(ORTHANC, '/dicom-web/servers/sample/retrieve',
262 { 'Resources' : [ { 'Study' : '2.16.840.1.113669.632.20.121711.10000160881',
263 'Series' : '1.3.46.670589.11.17521.5.0.3124.2008081909090037350',
264 'Instance' : '1.3.46.670589.11.17521.5.0.3124.2008081909113806560' } ] })
265 self.assertEqual(1, len(t['Instances']))
266
267
175 268
176 269
177 try: 270 try:
178 print('\nStarting the tests...') 271 print('\nStarting the tests...')
179 unittest.main(argv = [ sys.argv[0] ] + args.options) 272 unittest.main(argv = [ sys.argv[0] ] + args.options)