Mercurial > hg > orthanc-authorization
annotate UnitTestsSources/UnitTestsMain.cpp @ 111:2b1a95c7d263
wip: adjust tools/find queries
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 30 Aug 2023 18:10:09 +0200 |
parents | aa56dcf599b9 |
children | 572955904411 |
rev | line source |
---|---|
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
1 /** |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
2 * Orthanc - A Lightweight, RESTful DICOM Store |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
6 * |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Affero General Public License |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
11 * |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
15 * Affero General Public License for more details. |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
16 * |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Affero General Public License |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
19 **/ |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
20 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
21 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
22 #include <gtest/gtest.h> |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
23 #include <boost/lexical_cast.hpp> |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
24 #include <boost/algorithm/string/predicate.hpp> |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
25 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
26 #include "../Plugin/DefaultAuthorizationParser.h" |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
27 #include "../Plugin/AssociativeArray.h" |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
28 #include "../Plugin/AccessedResource.h" |
111 | 29 #include "../Plugin/IAuthorizationService.h" |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
30 #include "../Plugin/MemoryCache.h" |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
31 #include "../Plugin/PermissionParser.h" |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
32 #include "../Plugin/ResourceHierarchyCache.h" |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
33 |
111 | 34 extern void AdjustToolsFindQueryLabels(Json::Value& query, const OrthancPlugins::IAuthorizationService::UserProfile& profile); |
35 | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
36 using namespace OrthancPlugins; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
37 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
38 std::string instanceOrthancId = "44444444-44444444-44444444-44444444-44444444"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
39 std::string seriesOrthancId = "33333333-33333333-33333333-33333333-33333333"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
40 std::string studyOrthancId = "22222222-22222222-22222222-22222222-22222222"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
41 std::string patientOrthancId = "11111111-11111111-11111111-11111111-11111111"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
42 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
43 std::string instanceDicomUid = "4.4"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
44 std::string seriesDicomUid = "3.3"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
45 std::string studyDicomUid = "2.2"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
46 std::string patientDicomUid = "PATIENT.1"; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
47 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
48 bool IsAccessing(const IAuthorizationParser::AccessedResources& accesses, AccessLevel level, const std::string& orthancId) |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
49 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
50 for (IAuthorizationParser::AccessedResources::const_iterator it = accesses.begin(); it != accesses.end(); ++it) |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
51 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
52 if (it->GetLevel() == level && it->GetOrthancId() == orthancId) |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
53 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
54 return true; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
55 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
56 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
57 return false; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
58 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
59 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
60 namespace OrthancPlugins |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
61 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
62 // The namespace is necessary for friend classes to work |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
63 // http://code.google.com/p/googletest/wiki/AdvancedGuide#Private_Class_Members |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
64 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
65 TEST(DefaultAuthorizationParser, Parse) |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
66 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
67 MemoryCache::Factory factory(10); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
68 DefaultAuthorizationParser parser(factory, "/dicom-web/"); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
69 ResourceHierarchyCache* cache = parser.GetResourceHierarchy(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
70 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
71 cache->AddOrthancDicomMapping(Orthanc::ResourceType_Instance, instanceOrthancId, instanceDicomUid); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
72 cache->AddOrthancDicomMapping(Orthanc::ResourceType_Series, seriesOrthancId, seriesDicomUid); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
73 cache->AddOrthancDicomMapping(Orthanc::ResourceType_Study, studyOrthancId, studyDicomUid); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
74 cache->AddOrthancDicomMapping(Orthanc::ResourceType_Patient, patientOrthancId, patientDicomUid); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
75 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
76 cache->AddParentLink(Orthanc::ResourceType_Instance, instanceOrthancId, seriesOrthancId); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
77 cache->AddParentLink(Orthanc::ResourceType_Series, seriesOrthancId, studyOrthancId); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
78 cache->AddParentLink(Orthanc::ResourceType_Study, studyOrthancId, patientOrthancId); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
79 |
110 | 80 cache->AddLabels(Orthanc::ResourceType_Series, seriesOrthancId, "series-label"); |
81 cache->AddLabels(Orthanc::ResourceType_Study, studyOrthancId, "study-label"); | |
82 cache->AddLabels(Orthanc::ResourceType_Instance, instanceOrthancId, "instance-label"); | |
83 cache->AddLabels(Orthanc::ResourceType_Patient, patientOrthancId, "patient-label"); | |
84 | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
85 IAuthorizationParser::AccessedResources accesses; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
86 AssociativeArray noGetArguments(0, NULL, NULL, false); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
87 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
88 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
89 parser.Parse(accesses, "/studies/22222222-22222222-22222222-22222222-22222222/", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
90 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
91 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
92 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
93 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
94 parser.Parse(accesses, "/studies/22222222-22222222-22222222-22222222-22222222/instances", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
95 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
96 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
97 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
98 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
99 parser.Parse(accesses, "/studies/22222222-22222222-22222222-22222222-22222222/archive", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
100 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
101 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
102 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
103 accesses.clear(); |
101 | 104 parser.Parse(accesses, "/studies/22222222-22222222-22222222-22222222-22222222/ohif-dicom.json", noGetArguments.GetMap()); |
105 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
106 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
107 | |
108 accesses.clear(); | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
109 parser.Parse(accesses, "/osimis-viewer/studies/22222222-22222222-22222222-22222222-22222222/archive", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
110 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
111 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
112 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
113 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
114 parser.Parse(accesses, "/series/33333333-33333333-33333333-33333333-33333333/", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
115 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
116 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
117 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
118 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
119 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
120 parser.Parse(accesses, "/series/33333333-33333333-33333333-33333333-33333333/media", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
121 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
122 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
123 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
124 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
125 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
126 parser.Parse(accesses, "/series/33333333-33333333-33333333-33333333-33333333/modify", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
127 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
128 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
129 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
130 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
131 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
132 parser.Parse(accesses, "/web-viewer/series/33333333-33333333-33333333-33333333-33333333", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
133 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
134 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
135 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
136 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
137 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
138 parser.Parse(accesses, "/osimis-viewer/series/33333333-33333333-33333333-33333333-33333333", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
139 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
140 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
141 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
142 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
143 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
144 parser.Parse(accesses, "/instances/44444444-44444444-44444444-44444444-44444444/file", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
145 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
146 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
147 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
148 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
149 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
150 accesses.clear(); |
99 | 151 parser.Parse(accesses, "/instances/44444444-44444444-44444444-44444444-44444444/preview", noGetArguments.GetMap()); |
152 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); | |
153 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); | |
154 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
155 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
156 | |
157 accesses.clear(); | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
158 parser.Parse(accesses, "/web-viewer/instances/jpeg95-44444444-44444444-44444444-44444444-44444444_0", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
159 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
160 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
161 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
162 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
163 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
164 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
165 parser.Parse(accesses, "/osimis-viewer/images/44444444-44444444-44444444-44444444-44444444/0/high-quality", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
166 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
167 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
168 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
169 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
170 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
171 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
172 parser.Parse(accesses, "/system", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
173 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_System, "/system")); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
174 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
175 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
176 ///////////////////////// dicom-web |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
177 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
178 parser.Parse(accesses, "/dicom-web/studies/2.2", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
179 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
180 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
181 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
182 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
183 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
184 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
185 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
186 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
187 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
188 accesses.clear(); |
80 | 189 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/rendered", noGetArguments.GetMap()); |
190 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); | |
191 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
192 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
193 | |
194 accesses.clear(); | |
195 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/metadata", noGetArguments.GetMap()); | |
196 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); | |
197 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
198 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
199 | |
200 accesses.clear(); | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
201 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
202 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
203 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
204 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
205 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
206 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
207 accesses.clear(); |
80 | 208 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/metadata", noGetArguments.GetMap()); |
209 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); | |
210 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); | |
211 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
212 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
213 | |
214 accesses.clear(); | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
215 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/frames/0", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
216 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
217 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
218 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
219 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
220 |
80 | 221 accesses.clear(); |
222 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/frames/0/rendered", noGetArguments.GetMap()); | |
223 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); | |
224 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); | |
225 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); | |
226 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); | |
227 | |
98
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
228 accesses.clear(); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
229 parser.Parse(accesses, "/dicom-web/studies/2.2/series/3.3/instances/4.4/bulk/7fe00010", noGetArguments.GetMap()); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
230 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
231 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
232 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
233 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
c82f0c7d2c6a
Fix parsing of dicom-web/studies/../series/../instances/../bulk/.. routes
Alain Mazy <am@osimis.io>
parents:
92
diff
changeset
|
234 |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
235 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
236 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
237 const char* getKeys[] = {"0020000D"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
238 const char* getValues[] = {"2.2"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
239 AssociativeArray getArguments(1, getKeys, getValues, false); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
240 parser.Parse(accesses, "/dicom-web/studies", getArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
241 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
242 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
243 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
244 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
245 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
246 const char* getKeys[] = {"0020000D", "0020000E"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
247 const char* getValues[] = {"2.2", "3.3"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
248 AssociativeArray getArguments(2, getKeys, getValues, false); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
249 parser.Parse(accesses, "/dicom-web/series", getArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
250 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
251 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
252 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
253 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
254 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
255 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
256 const char* getKeys[] = {"0020000D", "00080018", "0020000E"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
257 const char* getValues[] = {"2.2", "4.4", "3.3", }; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
258 AssociativeArray getArguments(3, getKeys, getValues, false); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
259 parser.Parse(accesses, "/dicom-web/studies", getArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
260 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
261 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
262 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
263 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
264 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
265 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
266 accesses.clear(); |
92
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
267 const char* getKeys[] = {"StudyInstanceUID", "SOPInstanceUID", "SeriesInstanceUID"}; |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
268 const char* getValues[] = {"2.2", "4.4", "3.3", }; |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
269 AssociativeArray getArguments(3, getKeys, getValues, false); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
270 parser.Parse(accesses, "/dicom-web/studies", getArguments.GetMap()); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
271 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Instance, instanceOrthancId)); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
272 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Series, seriesOrthancId)); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
273 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Study, studyOrthancId)); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
274 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
275 } |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
276 { |
8dc22bc353de
QIDO-RS now supports named tags in get arguments
Alain Mazy <am@osimis.io>
parents:
80
diff
changeset
|
277 accesses.clear(); |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
278 const char* getKeys[] = {"00100010"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
279 const char* getValues[] = {"PATIENT.1"}; |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
280 AssociativeArray getArguments(1, getKeys, getValues, false); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
281 parser.Parse(accesses, "/dicom-web/studies", getArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
282 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_Patient, patientOrthancId)); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
283 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
284 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
285 { // qido with no arguments = search all => system resource |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
286 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
287 parser.Parse(accesses, "/dicom-web/studies", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
288 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_System, "/dicom-web/studies")); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
289 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
290 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
291 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
292 parser.Parse(accesses, "/dicom-web/servers", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
293 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_System, "/dicom-web/servers")); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
294 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
295 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
296 parser.Parse(accesses, "/dicom-web/info", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
297 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_System, "/dicom-web/info")); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
298 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
299 accesses.clear(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
300 parser.Parse(accesses, "/dicom-web/servers/test/qido", noGetArguments.GetMap()); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
301 ASSERT_TRUE(IsAccessing(accesses, AccessLevel_System, "/dicom-web/servers/test/qido")); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
302 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
303 } |
111 | 304 |
305 bool IsInJsonArray(const char* needle, const Json::Value& array) | |
306 { | |
307 for (Json::ArrayIndex i = 0; i < array.size(); ++i) | |
308 { | |
309 if (array[i].asString() == needle) | |
310 { | |
311 return true; | |
312 } | |
313 } | |
314 return false; | |
315 } | |
316 | |
317 TEST(ToolsFindLabels, AdjustQueryForUserWithoutRestrictions) | |
318 { | |
319 // user who has access to all labels | |
320 OrthancPlugins::IAuthorizationService::UserProfile profile; | |
321 profile.authorizedLabels.insert("*"); | |
322 | |
323 { // no labels before transformation -> no labels after | |
324 Json::Value query; | |
325 query["Query"] = Json::objectValue; | |
326 query["Query"]["PatientID"] = "*"; | |
327 | |
328 AdjustToolsFindQueryLabels(query, profile); | |
329 | |
330 ASSERT_FALSE(query.isMember("Labels")); | |
331 ASSERT_FALSE(query.isMember("LabelsConstraint")); | |
332 } | |
333 | |
334 { // missing LabelsConstraint -> throw | |
335 Json::Value query; | |
336 query["Query"] = Json::objectValue; | |
337 query["Query"]["PatientID"] = "*"; | |
338 query["Labels"] = Json::arrayValue; | |
339 query["Labels"].append("a"); | |
340 | |
341 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
342 } | |
343 | |
344 { // simple 'All' label constraint is not modified since user has access to all labels | |
345 Json::Value query; | |
346 query["Query"] = Json::objectValue; | |
347 query["Query"]["PatientID"] = "*"; | |
348 query["Labels"] = Json::arrayValue; | |
349 query["Labels"].append("a"); | |
350 query["Labels"].append("b"); | |
351 query["LabelsConstraint"] = "All"; | |
352 | |
353 AdjustToolsFindQueryLabels(query, profile); | |
354 | |
355 ASSERT_EQ(2u, query["Labels"].size()); | |
356 ASSERT_TRUE(IsInJsonArray("a", query["Labels"])); | |
357 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
358 ASSERT_EQ("All", query["LabelsConstraint"].asString()); | |
359 } | |
360 | |
361 { // simple 'Any' label constraint is not modified since user has access to all labels | |
362 Json::Value query; | |
363 query["Query"] = Json::objectValue; | |
364 query["Query"]["PatientID"] = "*"; | |
365 query["Labels"] = Json::arrayValue; | |
366 query["Labels"].append("a"); | |
367 query["Labels"].append("b"); | |
368 query["LabelsConstraint"] = "Any"; | |
369 | |
370 AdjustToolsFindQueryLabels(query, profile); | |
371 | |
372 ASSERT_EQ(2u, query["Labels"].size()); | |
373 ASSERT_TRUE(IsInJsonArray("a", query["Labels"])); | |
374 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
375 ASSERT_EQ("Any", query["LabelsConstraint"].asString()); | |
376 } | |
377 | |
378 { // simple 'None' label constraint is not modified since user has access to all labels | |
379 Json::Value query; | |
380 query["Query"] = Json::objectValue; | |
381 query["Query"]["PatientID"] = "*"; | |
382 query["Labels"] = Json::arrayValue; | |
383 query["Labels"].append("a"); | |
384 query["Labels"].append("b"); | |
385 query["LabelsConstraint"] = "None"; | |
386 | |
387 AdjustToolsFindQueryLabels(query, profile); | |
388 | |
389 ASSERT_EQ(2u, query["Labels"].size()); | |
390 ASSERT_TRUE(IsInJsonArray("a", query["Labels"])); | |
391 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
392 ASSERT_EQ("None", query["LabelsConstraint"].asString()); | |
393 } | |
394 | |
395 } | |
396 | |
397 | |
398 TEST(ToolsFindLabels, AdjustQueryForUserWithAuthorizedLabelsRestrictions) | |
399 { | |
400 // user who has access only to "b" and "c" | |
401 OrthancPlugins::IAuthorizationService::UserProfile profile; | |
402 profile.authorizedLabels.insert("b"); | |
403 profile.authorizedLabels.insert("c"); | |
404 | |
405 { // no labels before transformation -> "b", "c" label after | |
406 Json::Value query; | |
407 query["Query"] = Json::objectValue; | |
408 query["Query"]["PatientID"] = "*"; | |
409 | |
410 AdjustToolsFindQueryLabels(query, profile); | |
411 | |
412 ASSERT_EQ(2u, query["Labels"].size()); | |
413 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
414 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
415 ASSERT_EQ("Any", query["LabelsConstraint"].asString()); | |
416 } | |
417 | |
418 { // missing LabelsConstraint -> throw | |
419 Json::Value query; | |
420 query["Query"] = Json::objectValue; | |
421 query["Query"]["PatientID"] = "*"; | |
422 query["Labels"] = Json::arrayValue; | |
423 query["Labels"].append("a"); | |
424 | |
425 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
426 } | |
427 | |
428 { // 'All' label constraint is not modified if it contains the labels that are accessible to the user | |
429 Json::Value query; | |
430 query["Query"] = Json::objectValue; | |
431 query["Query"]["PatientID"] = "*"; | |
432 query["Labels"] = Json::arrayValue; | |
433 query["Labels"].append("b"); | |
434 query["Labels"].append("c"); | |
435 query["LabelsConstraint"] = "All"; | |
436 | |
437 AdjustToolsFindQueryLabels(query, profile); | |
438 | |
439 ASSERT_EQ(2u, query["Labels"].size()); | |
440 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
441 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
442 ASSERT_EQ("All", query["LabelsConstraint"].asString()); | |
443 } | |
444 | |
445 { // 'All' label constraint is not modified if it contains a subset of the labels that are accessible to the user | |
446 Json::Value query; | |
447 query["Query"] = Json::objectValue; | |
448 query["Query"]["PatientID"] = "*"; | |
449 query["Labels"] = Json::arrayValue; | |
450 query["Labels"].append("b"); | |
451 query["LabelsConstraint"] = "All"; | |
452 | |
453 AdjustToolsFindQueryLabels(query, profile); | |
454 | |
455 ASSERT_EQ(1u, query["Labels"].size()); | |
456 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
457 ASSERT_EQ("All", query["LabelsConstraint"].asString()); | |
458 } | |
459 | |
460 { // 'All' label constraint becomes invalid if it contains a label that is not accessible to the user | |
461 Json::Value query; | |
462 query["Query"] = Json::objectValue; | |
463 query["Query"]["PatientID"] = "*"; | |
464 query["Labels"] = Json::arrayValue; | |
465 query["Labels"].append("a"); | |
466 query["Labels"].append("b"); | |
467 query["LabelsConstraint"] = "All"; | |
468 | |
469 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
470 } | |
471 | |
472 { // 'Any' label constraint is not modified if it contains the labels that are accessible to the user | |
473 Json::Value query; | |
474 query["Query"] = Json::objectValue; | |
475 query["Query"]["PatientID"] = "*"; | |
476 query["Labels"] = Json::arrayValue; | |
477 query["Labels"].append("b"); | |
478 query["Labels"].append("c"); | |
479 query["LabelsConstraint"] = "Any"; | |
480 | |
481 AdjustToolsFindQueryLabels(query, profile); | |
482 | |
483 ASSERT_EQ(2u, query["Labels"].size()); | |
484 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
485 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
486 ASSERT_EQ("Any", query["LabelsConstraint"].asString()); | |
487 } | |
488 | |
489 { // 'Any' label constraint is not modified if it contains a subset of the labels that are accessible to the user | |
490 Json::Value query; | |
491 query["Query"] = Json::objectValue; | |
492 query["Query"]["PatientID"] = "*"; | |
493 query["Labels"] = Json::arrayValue; | |
494 query["Labels"].append("b"); | |
495 query["LabelsConstraint"] = "Any"; | |
496 | |
497 AdjustToolsFindQueryLabels(query, profile); | |
498 | |
499 ASSERT_EQ(1u, query["Labels"].size()); | |
500 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
501 ASSERT_EQ("Any", query["LabelsConstraint"].asString()); | |
502 } | |
503 | |
504 { // 'Any' label constraint only contains the intersection of the initial requested labels and the ones authorized to the user | |
505 Json::Value query; | |
506 query["Query"] = Json::objectValue; | |
507 query["Query"]["PatientID"] = "*"; | |
508 query["Labels"] = Json::arrayValue; | |
509 query["Labels"].append("a"); | |
510 query["Labels"].append("b"); | |
511 query["LabelsConstraint"] = "Any"; | |
512 | |
513 AdjustToolsFindQueryLabels(query, profile); | |
514 | |
515 ASSERT_EQ(1u, query["Labels"].size()); | |
516 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
517 ASSERT_EQ("Any", query["LabelsConstraint"].asString()); | |
518 } | |
519 | |
520 { // 'Any' label constraint can not be modified if the initial requested labels have nothing in common with the authorized labels | |
521 Json::Value query; | |
522 query["Query"] = Json::objectValue; | |
523 query["Query"]["PatientID"] = "*"; | |
524 query["Labels"] = Json::arrayValue; | |
525 query["Labels"].append("d"); | |
526 query["Labels"].append("e"); | |
527 query["LabelsConstraint"] = "Any"; | |
528 | |
529 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
530 } | |
531 | |
532 { // 'None' label constraint can not be modified since the user has only 'authorized_labels' -> throw | |
533 Json::Value query; | |
534 query["Query"] = Json::objectValue; | |
535 query["Query"]["PatientID"] = "*"; | |
536 query["Labels"] = Json::arrayValue; | |
537 query["Labels"].append("b"); | |
538 query["Labels"].append("c"); | |
539 query["LabelsConstraint"] = "None"; | |
540 | |
541 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
542 } | |
543 } | |
544 | |
545 TEST(ToolsFindLabels, AdjustQueryForUserWithForbiddenLabelsRestrictions) | |
546 { | |
547 // user who has forbidden access to "b" and "c" | |
548 OrthancPlugins::IAuthorizationService::UserProfile profile; | |
549 profile.forbiddenLabels.insert("b"); | |
550 profile.forbiddenLabels.insert("c"); | |
551 | |
552 { // no labels before transformation -> "b", "c" label after (with a 'None' constraint) | |
553 Json::Value query; | |
554 query["Query"] = Json::objectValue; | |
555 query["Query"]["PatientID"] = "*"; | |
556 | |
557 AdjustToolsFindQueryLabels(query, profile); | |
558 | |
559 ASSERT_EQ(2u, query["Labels"].size()); | |
560 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
561 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
562 ASSERT_EQ("None", query["LabelsConstraint"].asString()); | |
563 } | |
564 | |
565 { // missing LabelsConstraint -> throw | |
566 Json::Value query; | |
567 query["Query"] = Json::objectValue; | |
568 query["Query"]["PatientID"] = "*"; | |
569 query["Labels"] = Json::arrayValue; | |
570 query["Labels"].append("a"); | |
571 | |
572 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
573 } | |
574 | |
575 { // 'All' label constraint can not be modified for user with forbidden labels | |
576 Json::Value query; | |
577 query["Query"] = Json::objectValue; | |
578 query["Query"]["PatientID"] = "*"; | |
579 query["Labels"] = Json::arrayValue; | |
580 query["Labels"].append("b"); | |
581 query["Labels"].append("c"); | |
582 query["LabelsConstraint"] = "All"; | |
583 | |
584 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
585 } | |
586 | |
587 { // 'Any' label constraint can not be modified for user with forbidden labels | |
588 Json::Value query; | |
589 query["Query"] = Json::objectValue; | |
590 query["Query"]["PatientID"] = "*"; | |
591 query["Labels"] = Json::arrayValue; | |
592 query["Labels"].append("b"); | |
593 query["Labels"].append("c"); | |
594 query["LabelsConstraint"] = "Any"; | |
595 | |
596 ASSERT_THROW(AdjustToolsFindQueryLabels(query, profile), Orthanc::OrthancException); | |
597 } | |
598 | |
599 { // 'None' label constraint are modified to always contain at least all forbidden_labels of the user | |
600 Json::Value query; | |
601 query["Query"] = Json::objectValue; | |
602 query["Query"]["PatientID"] = "*"; | |
603 query["Labels"] = Json::arrayValue; | |
604 query["Labels"].append("b"); | |
605 query["LabelsConstraint"] = "None"; | |
606 | |
607 AdjustToolsFindQueryLabels(query, profile); | |
608 ASSERT_EQ(2u, query["Labels"].size()); | |
609 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
610 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
611 ASSERT_EQ("None", query["LabelsConstraint"].asString()); | |
612 } | |
613 | |
614 { // 'None' label constraint are modified to always contain at least all forbidden_labels of the user | |
615 Json::Value query; | |
616 query["Query"] = Json::objectValue; | |
617 query["Query"]["PatientID"] = "*"; | |
618 query["Labels"] = Json::arrayValue; | |
619 query["Labels"].append("d"); | |
620 query["LabelsConstraint"] = "None"; | |
621 | |
622 AdjustToolsFindQueryLabels(query, profile); | |
623 ASSERT_EQ(3u, query["Labels"].size()); | |
624 ASSERT_TRUE(IsInJsonArray("b", query["Labels"])); | |
625 ASSERT_TRUE(IsInJsonArray("c", query["Labels"])); | |
626 ASSERT_TRUE(IsInJsonArray("d", query["Labels"])); | |
627 ASSERT_EQ("None", query["LabelsConstraint"].asString()); | |
628 } | |
629 } | |
630 | |
77
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
631 } |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
632 |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
633 int main(int argc, char **argv) |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
634 { |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
635 ::testing::InitGoogleTest(&argc, argv); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
636 return RUN_ALL_TESTS(); |
94a9484d7f8f
fix security issues allowing to browse remote dicom servers + introduced UnitTests
Alain Mazy <am@osimis.io>
parents:
diff
changeset
|
637 } |