Mercurial > hg > orthanc-tests
annotate Plugins/WebDav/Run.py @ 338:edaeb57bf01f
creating tests for webdav
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 13 Oct 2020 12:00:08 +0200 |
parents | |
children | 44ab919be2e9 |
rev | line source |
---|---|
338
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/python |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 # Orthanc - A Lightweight, RESTful DICOM Store |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 # Department, University Hospital of Liege, Belgium |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 # Copyright (C) 2017-2020 Osimis S.A., Belgium |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 # |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 # This program is free software: you can redistribute it and/or |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 # modify it under the terms of the GNU General Public License as |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 # published by the Free Software Foundation, either version 3 of the |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 # License, or (at your option) any later version. |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 # |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, but |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 # WITHOUT ANY WARRANTY; without even the implied warranty of |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 # General Public License for more details. |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 # |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 # You should have received a copy of the GNU General Public License |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 import argparse |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 import easywebdav |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 import io |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 import os |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 import pprint |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 import re |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 import sys |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 import unittest |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'Tests')) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 from Toolbox import * |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 ## Parse the command-line arguments |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 parser = argparse.ArgumentParser(description = 'Run the integration tests for the patient recycling behavior.') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 parser.add_argument('--server', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 default = 'localhost', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 help = 'Address of the Orthanc server to test') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 parser.add_argument('--rest', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 type = int, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 default = 8042, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 help = 'Port to the REST API') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 parser.add_argument('--username', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 default = 'alice', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 help = 'Username to the REST API') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 parser.add_argument('--password', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 default = 'orthanctest', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 help = 'Password to the REST API') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 parser.add_argument('--force', help = 'Do not warn the user', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 action = 'store_true') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 parser.add_argument('options', metavar = 'N', nargs = '*', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 help='Arguments to Python unittest') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 args = parser.parse_args() |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 ## Configure the testing context |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 if not args.force: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 print(""" |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 WARNING: This test will remove all the content of your |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 Orthanc instance running on %s! |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 Are you sure ["yes" to go on]?""" % args.server) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 if sys.stdin.readline().strip() != 'yes': |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 print('Aborting...') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 exit(0) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 ORTHANC = DefineOrthanc(server = args.server, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 username = args.username, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 password = args.password, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 restPort = args.rest) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 WEBDAV = easywebdav.connect(args.server, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 port = args.rest, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 username = args.username, |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 password = args.password) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 ## The tests |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 ## |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 def ListFiles(path, recursive): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 result = [ ] |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
97 for i in WEBDAV.ls(path): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
98 if i.name == path: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 pass |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 elif i.contenttype == '': |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 if recursive: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 result += ListFiles(i.name + '/', True) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 else: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
104 result.append(i.name) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 return result |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
108 def GetFileInfo(path): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
109 for i in WEBDAV.ls(path[0 : path.rfind('/')]): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
110 if i.name == path: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
111 return i |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
112 raise Exception('Cannot find: %s' % path) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
113 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 def DownloadFile(path): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
116 with tempfile.NamedTemporaryFile(delete = False) as f: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 f.close() |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
118 WEBDAV.download(path, f.name) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 with open(f.name, 'rb') as g: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 result = g.read() |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 os.unlink(f.name) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 return result |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
123 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
124 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 class Orthanc(unittest.TestCase): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 def setUp(self): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 if (sys.version_info >= (3, 0)): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 # Remove annoying warnings about unclosed socket in Python 3 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 import warnings |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 warnings.simplefilter("ignore", ResourceWarning) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 DropOrthanc(ORTHANC) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
133 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
134 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 def test_root(self): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 self.assertEqual(6, len(WEBDAV.ls('/webdav/'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 for i in WEBDAV.ls('/webdav/'): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 self.assertTrue(i.name in [ |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 '/webdav/', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 '/webdav/by-dates', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 '/webdav/by-patients', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 '/webdav/by-studies', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 '/webdav/by-uids', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 '/webdav/uploads' |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 ]) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 self.assertEqual(0, i.size) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 self.assertEqual('', i.contenttype) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 patients = WEBDAV.ls('/webdav/by-patients/') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 self.assertEqual(1, len(patients)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 self.assertEqual(patients[0].name, '/webdav/by-patients/') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 self.assertEqual(0, patients[0].size) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 self.assertEqual('', patients[0].contenttype) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 def test_upload(self): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 self.assertEqual(0, len(ListFiles('/webdav/uploads/', True))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 uploads = WEBDAV.ls('/webdav/uploads/') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 for i in uploads: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 self.assertEqual(i.contenttype, '') # Only folders are allowed |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 self.assertEqual(0, len(DoGet(ORTHANC, '/studies'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 WEBDAV.upload(GetDatabasePath('DummyCT.dcm'), '/webdav/uploads/DummyCT.dcm') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 while len(ListFiles('/webdav/uploads/', True)) > 1: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 time.sleep(0.1) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 instances = DoGet(ORTHANC, '/instances?expand') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 self.assertEqual(1, len(instances)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 self.assertEqual('1.2.840.113619.2.176.2025.1499492.7040.1171286242.109', |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 instances[0]['MainDicomTags']['SOPInstanceUID']) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 def test_upload_folders(self): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 self.assertEqual(0, len(ListFiles('/webdav/uploads/', True))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 self.assertEqual(0, len(DoGet(ORTHANC, '/studies'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 try: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 WEBDAV.mkdir('/webdav/uploads/a') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 except: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
182 pass |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 try: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
184 WEBDAV.mkdir('/webdav/uploads/b') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
185 except: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
186 pass |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
187 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 WEBDAV.upload(GetDatabasePath('DummyCT.dcm'), '/webdav/uploads/a/DummyCT.dcm') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
189 WEBDAV.upload(GetDatabasePath('ColorTestMalaterre.dcm'), '/webdav/uploads/b/ColorTestMalaterre.dcm') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
190 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
191 while len(ListFiles('/webdav/uploads/', True)) > 1: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
192 time.sleep(0.1) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
194 self.assertEqual(2, len(DoGet(ORTHANC, '/instances'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
195 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
196 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
197 def test_by_uids(self): |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
198 self.assertEqual(1, len(WEBDAV.ls('/webdav/by-uids/'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
199 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', True))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
200 self.assertEqual(0, len(DoGet(ORTHANC, '/instances'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
201 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
202 i = UploadInstance(ORTHANC, 'DummyCT.dcm')['ID'] |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
203 instance = DoGet(ORTHANC, '/instances/%s/tags?simplify' % i) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
204 studyUid = instance['StudyInstanceUID'] |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
205 seriesUid = instance['SeriesInstanceUID'] |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 sopUid = instance['SOPInstanceUID'] |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 self.assertEqual(0, len(ListFiles('/webdav/by-uids/', False))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
209 self.assertEqual(1, len(ListFiles('/webdav/by-uids/%s/' % studyUid, False))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
210 self.assertEqual(2, len(ListFiles('/webdav/by-uids/%s/%s/' % (studyUid, seriesUid), False))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
211 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
212 content = ListFiles('/webdav/by-uids/', True) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 self.assertEqual(3, len(content)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
214 self.assertTrue(('/webdav/by-uids/%s/study.json' % studyUid) in content) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
215 self.assertTrue(('/webdav/by-uids/%s/%s/series.json' % (studyUid, seriesUid)) in content) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
216 self.assertTrue(('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) in content) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
218 info = GetFileInfo('/webdav/by-uids/%s/study.json' % studyUid) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
219 self.assertEqual(info.contenttype, 'application/json') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
220 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
221 info = GetFileInfo('/webdav/by-uids/%s/%s/series.json' % (studyUid, seriesUid)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
222 self.assertEqual(info.contenttype, 'application/json') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
223 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
224 info = GetFileInfo('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
225 self.assertEqual(info.contenttype, 'application/dicom') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
226 self.assertEqual(info.size, os.stat(GetDatabasePath('DummyCT.dcm')).st_size) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
227 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
228 a = DownloadFile('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
229 self.assertEqual(len(a), info.size) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
230 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
231 with open(GetDatabasePath('DummyCT.dcm'), 'rb') as f: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
232 self.assertEqual(a, f.read()) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
233 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
234 self.assertEqual(studyUid, json.loads(DownloadFile('/webdav/by-uids/%s/study.json' % studyUid)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
235 ['MainDicomTags']['StudyInstanceUID']) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
236 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
237 self.assertEqual(seriesUid, json.loads(DownloadFile('/webdav/by-uids/%s/%s/series.json' % (studyUid, seriesUid))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
238 ['MainDicomTags']['SeriesInstanceUID']) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
239 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
240 self.assertEqual(1, len(DoGet(ORTHANC, '/instances'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
241 WEBDAV.delete('/webdav/by-uids/%s/%s/%s.dcm' % (studyUid, seriesUid, sopUid)) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
242 self.assertEqual(0, len(DoGet(ORTHANC, '/instances'))) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
243 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
244 try: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
245 print('\nStarting the tests...') |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
246 unittest.main(argv = [ sys.argv[0] ] + args.options) |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
247 |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
248 finally: |
edaeb57bf01f
creating tests for webdav
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
249 print('\nDone') |