Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 368:2cc40121c3a8
test_upload_multipart_1 and test_upload_multipart_2
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 Jan 2021 12:04:03 +0100 |
parents | 79ce0f7a9714 |
children | 24d93b42873a |
comparison
equal
deleted
inserted
replaced
367:9d2a63afdb73 | 368:2cc40121c3a8 |
---|---|
6165 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', m['SopClassUid']) | 6165 self.assertEqual('1.2.840.10008.5.1.4.1.1.4', m['SopClassUid']) |
6166 | 6166 |
6167 # This fails on Orthanc <= 1.8.1 | 6167 # This fails on Orthanc <= 1.8.1 |
6168 self.assertTrue('TransferSyntax' in m) | 6168 self.assertTrue('TransferSyntax' in m) |
6169 self.assertEqual('1.2.840.10008.1.2', m['TransferSyntax']) | 6169 self.assertEqual('1.2.840.10008.1.2', m['TransferSyntax']) |
6170 | |
6171 | |
6172 def test_upload_multipart_1(self): | |
6173 # This tests the "Upload" button in Orthanc Explorer | |
6174 | |
6175 def EncodeChunk(data, boundary, filename): | |
6176 return (('--%s\r\n' + | |
6177 'Content-Disposition : form-data ; name ="files[]" ; filename = "%s" \r\n' + | |
6178 '\r\n%s\r\n') % (boundary, filename, data)) | |
6179 | |
6180 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: | |
6181 dcm1 = f.read() | |
6182 | |
6183 with open(GetDatabasePath('ColorTestMalaterre.dcm'), 'rb') as f: | |
6184 dcm2 = f.read() | |
6185 | |
6186 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
6187 | |
6188 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ' | |
6189 m = DoPost(_REMOTE, '/instances', (EncodeChunk(dcm1, boundary, 'DummyCT.dcm') + | |
6190 EncodeChunk(dcm2, boundary, 'ColorTestMalaterre.dcm') + | |
6191 '--' + boundary + '--'), headers = { | |
6192 'Content-Type' : 'multipart/form-data ; boundary = %s ' % boundary, | |
6193 'X-Requested-With' : 'XMLHttpRequest', | |
6194 }) | |
6195 | |
6196 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) | |
6197 | |
6198 | |
6199 def test_upload_multipart_2(self): | |
6200 # This tests the "maxChunkSize" option of "jQuery File Upload | |
6201 # 5.12", whose source code can be found in: | |
6202 # "OrthancServer/OrthancExplorer/libs/jquery-file-upload/" | |
6203 | |
6204 def EncodeBody(data, boundary, filename): | |
6205 return (('--%s\r\n' + | |
6206 'Content-Disposition: form-data; name="files[]"; filename="%s"\r\n' + | |
6207 '\r\n%s\r\n--%s') % (boundary, filename, data, boundary)) | |
6208 | |
6209 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: | |
6210 dcm = f.read() | |
6211 | |
6212 with open(GetDatabasePath('ColorTestMalaterre.dcm'), 'rb') as f: | |
6213 dcm2 = f.read() | |
6214 | |
6215 boundary = '----WebKitFormBoundarypJDNQqJPoXiorRmQ' | |
6216 | |
6217 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
6218 m = DoPost(_REMOTE, '/instances', | |
6219 EncodeBody(dcm[0:1000], boundary, 'DummyCT.dcm'), | |
6220 headers = { | |
6221 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, | |
6222 'X-Requested-With' : 'XMLHttpRequest', | |
6223 'X-File-Name' : 'DummyCT.dcm', | |
6224 'X-File-Size' : str(len(dcm)), | |
6225 }) | |
6226 | |
6227 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
6228 m = DoPost(_REMOTE, '/instances', | |
6229 EncodeBody(dcm[1000:2000], boundary, 'DummyCT.dcm'), | |
6230 headers = { | |
6231 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, | |
6232 'X-Requested-With' : 'XMLHttpRequest', | |
6233 'X-File-Name' : 'DummyCT.dcm', | |
6234 'X-File-Size' : str(len(dcm)), | |
6235 }) | |
6236 self.assertEqual(0, len(DoGet(_REMOTE, '/instances'))) | |
6237 | |
6238 m = DoPost(_REMOTE, '/instances', | |
6239 EncodeBody(dcm2, boundary, 'ColorTestMalaterre.dcm'), | |
6240 headers = { | |
6241 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, | |
6242 'X-Requested-With' : 'XMLHttpRequest', | |
6243 'X-File-Name' : 'ColorTestMalaterre.dcm', | |
6244 'X-File-Size' : str(len(dcm2)), | |
6245 }) | |
6246 | |
6247 self.assertEqual(1, len(DoGet(_REMOTE, '/instances'))) | |
6248 | |
6249 # Upload the last chunk => the file is now entirely available | |
6250 m = DoPost(_REMOTE, '/instances', | |
6251 EncodeBody(dcm[2000:len(dcm)], boundary, 'DummyCT.dcm'), | |
6252 headers = { | |
6253 'Content-Type' : 'multipart/form-data; boundary=%s' % boundary, | |
6254 'X-Requested-With' : 'XMLHttpRequest', | |
6255 'X-File-Name' : 'DummyCT.dcm', | |
6256 'X-File-Size' : str(len(dcm)), | |
6257 }) | |
6258 | |
6259 self.assertEqual(2, len(DoGet(_REMOTE, '/instances'))) |