Mercurial > hg > orthanc
annotate OrthancFramework/UnitTestsSources/RestApiTests.cpp @ 4325:b96aedfa8cc1
unit tests now running in WebAssembly
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 24 Nov 2020 16:21:29 +0100 |
parents | 318c16cfccab |
children | 83c5bd439fcc |
rev | line source |
---|---|
827
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
1 /** |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
2 * Orthanc - A Lightweight, RESTful DICOM Store |
1900 | 3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
1288
6e7e5ed91c2d
upgrade to year 2015
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1064
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
3640
94f4a18a79cc
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3399
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
827
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
6 * |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public License |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
10 * the License, or (at your option) any later version. |
827
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
11 * |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
15 * Lesser General Public License for more details. |
827
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
16 * |
4119
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
18 * License along with this program. If not, see |
bf7b9edf6b81
re-licensing the OrthancFramework to LGPL, in order to license Stone of Orthanc under LGPL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4072
diff
changeset
|
19 * <http://www.gnu.org/licenses/>. |
827
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
20 **/ |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
21 |
3d6f9b7d0add
precompiled headers in unit tests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
707
diff
changeset
|
22 |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3853
diff
changeset
|
23 #if ORTHANC_UNIT_TESTS_LINK_FRAMEWORK == 1 |
4063
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
24 // Must be the first to be sure to use the Orthanc framework shared library |
4014
27628b0f6ada
merging logging code for plugins and files
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3992
diff
changeset
|
25 # include <OrthancFramework.h> |
3992
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3853
diff
changeset
|
26 #endif |
f9863630ec7f
working on the shared library for Orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3853
diff
changeset
|
27 |
4062 | 28 #include <gtest/gtest.h> |
209 | 29 |
4045 | 30 #include "../Sources/ChunkedBuffer.h" |
31 #include "../Sources/Compression/ZlibCompressor.h" | |
32 #include "../Sources/HttpServer/HttpContentNegociation.h" | |
33 #include "../Sources/HttpServer/MultipartStreamReader.h" | |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
34 #include "../Sources/Logging.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
35 #include "../Sources/OrthancException.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
36 #include "../Sources/RestApi/RestApi.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
37 #include "../Sources/RestApi/RestApiHierarchy.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
38 #include "../Sources/WebServiceParameters.h" |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
39 |
4062 | 40 #include <ctype.h> |
41 #include <boost/lexical_cast.hpp> | |
42 #include <algorithm> | |
43 | |
209 | 44 |
45 using namespace Orthanc; | |
46 | |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
47 #if !defined(UNIT_TESTS_WITH_HTTP_CONNEXIONS) && (ORTHANC_SANDBOXED != 1) |
4063
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
48 # error UNIT_TESTS_WITH_HTTP_CONNEXIONS is not defined |
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
49 #endif |
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
50 |
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
51 #if !defined(ORTHANC_ENABLE_SSL) |
e00f3d089991
shared library of orthanc framework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4062
diff
changeset
|
52 # error ORTHANC_ENABLE_SSL is not defined |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
53 #endif |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
54 |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
55 #if ORTHANC_SANDBOXED != 1 |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
56 # include "../Sources/HttpClient.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
57 # include "../Sources/SystemToolbox.h" |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
58 #endif |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
59 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
60 |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
61 #if ORTHANC_SANDBOXED != 1 |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
62 TEST(HttpClient, Basic) |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
63 { |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
64 HttpClient c; |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
65 ASSERT_FALSE(c.IsVerbose()); |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
66 c.SetVerbose(true); |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
67 ASSERT_TRUE(c.IsVerbose()); |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
68 c.SetVerbose(false); |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
69 ASSERT_FALSE(c.IsVerbose()); |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
70 |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
71 #if UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1 |
2386
883387e2b379
remove dependendy upon ULg Montefiore Web server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2363
diff
changeset
|
72 // The "http://www.orthanc-server.com/downloads/third-party/" does |
883387e2b379
remove dependendy upon ULg Montefiore Web server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2363
diff
changeset
|
73 // not automatically redirect to HTTPS, so we cas use it even if the |
883387e2b379
remove dependendy upon ULg Montefiore Web server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2363
diff
changeset
|
74 // OpenSSL/HTTPS support is disabled in curl |
883387e2b379
remove dependendy upon ULg Montefiore Web server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2363
diff
changeset
|
75 const std::string BASE = "http://www.orthanc-server.com/downloads/third-party/"; |
2363
f8ef157f2d73
fix unit tests given www.orthanc-server.com now mandatory uses HTTPS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
76 |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
77 Json::Value v; |
2363
f8ef157f2d73
fix unit tests given www.orthanc-server.com now mandatory uses HTTPS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
78 c.SetUrl(BASE + "Product.json"); |
f8ef157f2d73
fix unit tests given www.orthanc-server.com now mandatory uses HTTPS
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2244
diff
changeset
|
79 |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
80 c.Apply(v); |
2187
ad72fbd700b7
move of third party downloads to the main server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2143
diff
changeset
|
81 ASSERT_TRUE(v.type() == Json::objectValue); |
ad72fbd700b7
move of third party downloads to the main server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2143
diff
changeset
|
82 ASSERT_TRUE(v.isMember("Description")); |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
83 #endif |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
84 } |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
85 #endif |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
86 |
1532 | 87 |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
88 #if (UNIT_TESTS_WITH_HTTP_CONNEXIONS == 1) && (ORTHANC_ENABLE_SSL == 1) && (ORTHANC_SANDBOXED != 1) |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
89 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
90 /** |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
91 The HTTPS CA certificates for BitBucket were extracted as follows: |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
92 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
93 (1) We retrieve the certification chain of BitBucket: |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
94 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
95 # echo | openssl s_client -showcerts -connect www.bitbucket.org:443 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
96 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
97 (2) We see that the certification authority (CA) is |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
98 "www.digicert.com", and the root certificate is "DigiCert High |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
99 Assurance EV Root CA". As a consequence, we navigate to DigiCert to |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
100 find the URL to this CA certificate: |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
101 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
102 firefox https://www.digicert.com/digicert-root-certificates.htm |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
103 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
104 (3) Once we get the URL to the CA certificate, we convert it to a C |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
105 macro that can be used by libcurl: |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
106 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
107 # cd UnitTestsSources |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
108 # ../Resources/RetrieveCACertificates.py BITBUCKET_CERTIFICATES https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt > BitbucketCACertificates.h |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
109 **/ |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
110 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
111 #include "BitbucketCACertificates.h" |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
112 |
1533
0011cc99443c
improving HTTPS support
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1532
diff
changeset
|
113 TEST(HttpClient, Ssl) |
1532 | 114 { |
2140 | 115 SystemToolbox::WriteFile(BITBUCKET_CERTIFICATES, "UnitTestsResults/bitbucket.cert"); |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
116 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
117 /*{ |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
118 std::string s; |
2140 | 119 SystemToolbox::ReadFile(s, "/usr/share/ca-certificates/mozilla/WoSign.crt"); |
120 SystemToolbox::WriteFile(s, "UnitTestsResults/bitbucket.cert"); | |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
121 }*/ |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
122 |
1532 | 123 HttpClient c; |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
124 c.SetHttpsVerifyPeers(true); |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
125 c.SetHttpsCACertificates("UnitTestsResults/bitbucket.cert"); |
3853 | 126 |
127 // Test file modified on 2020-04-20, in order to use a git | |
128 // repository on BitBucket instead of a Mercurial repository | |
129 // (because Mercurial support disappears on 2020-05-31) | |
130 c.SetUrl("https://bitbucket.org/osimis/orthanc-setup-samples/raw/master/docker/serve-folders/orthanc/serve-folders.json"); | |
1532 | 131 |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
132 Json::Value v; |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
133 c.Apply(v); |
3853 | 134 ASSERT_TRUE(v.isMember("ServeFolders")); |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
135 } |
1533
0011cc99443c
improving HTTPS support
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1532
diff
changeset
|
136 |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
137 TEST(HttpClient, SslNoVerification) |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
138 { |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
139 HttpClient c; |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
140 c.SetHttpsVerifyPeers(false); |
3853 | 141 c.SetUrl("https://bitbucket.org/osimis/orthanc-setup-samples/raw/master/docker/serve-folders/orthanc/serve-folders.json"); |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
142 |
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
143 Json::Value v; |
1532 | 144 c.Apply(v); |
3853 | 145 ASSERT_TRUE(v.isMember("ServeFolders")); |
1532 | 146 } |
1534
95b3b0260240
Options to validate peers against CA certificates in HTTPS requests
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1533
diff
changeset
|
147 |
1532 | 148 #endif |
149 | |
150 | |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
151 TEST(ChunkedBuffer, Basic) |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
152 { |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
153 for (unsigned int i = 0; i < 2; i++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
154 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
155 ChunkedBuffer b; |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
156 |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
157 if (i == 0) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
158 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
159 b.SetPendingBufferSize(0); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
160 ASSERT_EQ(0u, b.GetPendingBufferSize()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
161 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
162 else |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
163 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
164 ASSERT_EQ(16u * 1024u, b.GetPendingBufferSize()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
165 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
166 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
167 ASSERT_EQ(0u, b.GetNumBytes()); |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
168 |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
169 b.AddChunk("hello", 5); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
170 ASSERT_EQ(5u, b.GetNumBytes()); |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
171 |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
172 b.AddChunk("world", 5); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
173 ASSERT_EQ(10u, b.GetNumBytes()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
174 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
175 std::string s; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
176 b.Flatten(s); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
177 ASSERT_EQ("helloworld", s); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
178 } |
707
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
179 } |
203157cb4fde
unit tests of httpclient
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
632
diff
changeset
|
180 |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
181 |
330 | 182 TEST(RestApi, ParseCookies) |
183 { | |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
184 IHttpHandler::Arguments headers; |
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
185 IHttpHandler::Arguments cookies; |
330 | 186 |
332 | 187 headers["cookie"] = "a=b;c=d;;;e=f;;g=h;"; |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
188 HttpToolbox::ParseCookies(cookies, headers); |
330 | 189 ASSERT_EQ(4u, cookies.size()); |
190 ASSERT_EQ("b", cookies["a"]); | |
191 ASSERT_EQ("d", cookies["c"]); | |
192 ASSERT_EQ("f", cookies["e"]); | |
193 ASSERT_EQ("h", cookies["g"]); | |
194 | |
332 | 195 headers["cookie"] = " name = value ; name2=value2"; |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
196 HttpToolbox::ParseCookies(cookies, headers); |
330 | 197 ASSERT_EQ(2u, cookies.size()); |
198 ASSERT_EQ("value", cookies["name"]); | |
199 ASSERT_EQ("value2", cookies["name2"]); | |
200 | |
332 | 201 headers["cookie"] = " ;;; "; |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
202 HttpToolbox::ParseCookies(cookies, headers); |
330 | 203 ASSERT_EQ(0u, cookies.size()); |
204 | |
332 | 205 headers["cookie"] = " ; n=v ;; "; |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
206 HttpToolbox::ParseCookies(cookies, headers); |
330 | 207 ASSERT_EQ(1u, cookies.size()); |
208 ASSERT_EQ("v", cookies["n"]); | |
209 } | |
210 | |
209 | 211 TEST(RestApi, RestApiPath) |
212 { | |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
213 IHttpHandler::Arguments args; |
209 | 214 UriComponents trail; |
215 | |
216 { | |
217 RestApiPath uri("/coucou/{abc}/d/*"); | |
218 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d/e/f/g")); | |
219 ASSERT_EQ(1u, args.size()); | |
220 ASSERT_EQ(3u, trail.size()); | |
221 ASSERT_EQ("moi", args["abc"]); | |
222 ASSERT_EQ("e", trail[0]); | |
223 ASSERT_EQ("f", trail[1]); | |
224 ASSERT_EQ("g", trail[2]); | |
225 | |
226 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi/f")); | |
227 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d/")); | |
228 ASSERT_FALSE(uri.Match(args, trail, "/a/moi/d")); | |
229 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi")); | |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
230 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
231 ASSERT_EQ(3u, uri.GetLevelCount()); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
232 ASSERT_TRUE(uri.IsUniversalTrailing()); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
233 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
234 ASSERT_EQ("coucou", uri.GetLevelName(0)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
235 ASSERT_THROW(uri.GetWildcardName(0), OrthancException); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
236 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
237 ASSERT_EQ("abc", uri.GetWildcardName(1)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
238 ASSERT_THROW(uri.GetLevelName(1), OrthancException); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
239 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
240 ASSERT_EQ("d", uri.GetLevelName(2)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
241 ASSERT_THROW(uri.GetWildcardName(2), OrthancException); |
209 | 242 } |
243 | |
244 { | |
245 RestApiPath uri("/coucou/{abc}/d"); | |
246 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi/d/e/f/g")); | |
247 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d")); | |
248 ASSERT_EQ(1u, args.size()); | |
249 ASSERT_EQ(0u, trail.size()); | |
250 ASSERT_EQ("moi", args["abc"]); | |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
251 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
252 ASSERT_EQ(3u, uri.GetLevelCount()); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
253 ASSERT_FALSE(uri.IsUniversalTrailing()); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
254 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
255 ASSERT_EQ("coucou", uri.GetLevelName(0)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
256 ASSERT_THROW(uri.GetWildcardName(0), OrthancException); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
257 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
258 ASSERT_EQ("abc", uri.GetWildcardName(1)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
259 ASSERT_THROW(uri.GetLevelName(1), OrthancException); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
260 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
261 ASSERT_EQ("d", uri.GetLevelName(2)); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
262 ASSERT_THROW(uri.GetWildcardName(2), OrthancException); |
209 | 263 } |
264 | |
265 { | |
266 RestApiPath uri("/*"); | |
267 ASSERT_TRUE(uri.Match(args, trail, "/a/b/c")); | |
268 ASSERT_EQ(0u, args.size()); | |
269 ASSERT_EQ(3u, trail.size()); | |
270 ASSERT_EQ("a", trail[0]); | |
271 ASSERT_EQ("b", trail[1]); | |
272 ASSERT_EQ("c", trail[2]); | |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
273 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
274 ASSERT_EQ(0u, uri.GetLevelCount()); |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
275 ASSERT_TRUE(uri.IsUniversalTrailing()); |
209 | 276 } |
277 } | |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
278 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
279 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
280 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
281 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
282 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
283 |
968 | 284 static int testValue; |
285 | |
286 template <int value> | |
974 | 287 static void SetValue(RestApiGetCall& get) |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
288 { |
968 | 289 testValue = value; |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
290 } |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
291 |
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
292 |
969 | 293 static bool GetDirectory(Json::Value& target, |
294 RestApiHierarchy& hierarchy, | |
295 const std::string& uri) | |
296 { | |
297 UriComponents p; | |
298 Toolbox::SplitUriComponents(p, uri); | |
299 return hierarchy.GetDirectory(target, p); | |
300 } | |
301 | |
302 | |
978 | 303 |
304 namespace | |
305 { | |
306 class MyVisitor : public RestApiHierarchy::IVisitor | |
307 { | |
308 public: | |
309 virtual bool Visit(const RestApiHierarchy::Resource& resource, | |
310 const UriComponents& uri, | |
1441
f3672356c121
refactoring: IHttpHandler and HttpToolbox
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1419
diff
changeset
|
311 const IHttpHandler::Arguments& components, |
2924
22524fd06225
macros ORTHANC_OVERRIDE and ORTHANC_FINAL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2824
diff
changeset
|
312 const UriComponents& trailing) ORTHANC_OVERRIDE |
978 | 313 { |
2543 | 314 return resource.Handle(*(RestApiGetCall*) NULL); |
978 | 315 } |
316 }; | |
317 } | |
318 | |
319 | |
969 | 320 static bool HandleGet(RestApiHierarchy& hierarchy, |
321 const std::string& uri) | |
322 { | |
323 UriComponents p; | |
324 Toolbox::SplitUriComponents(p, uri); | |
978 | 325 MyVisitor visitor; |
326 return hierarchy.LookupResource(p, visitor); | |
969 | 327 } |
328 | |
329 | |
968 | 330 TEST(RestApi, RestApiHierarchy) |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
331 { |
968 | 332 RestApiHierarchy root; |
970 | 333 root.Register("/hello/world/test", SetValue<1>); |
334 root.Register("/hello/world/test2", SetValue<2>); | |
335 root.Register("/hello/{world}/test3/test4", SetValue<3>); | |
336 root.Register("/hello2/*", SetValue<4>); | |
968 | 337 |
338 Json::Value m; | |
339 root.CreateSiteMap(m); | |
340 std::cout << m; | |
341 | |
342 Json::Value d; | |
969 | 343 ASSERT_FALSE(GetDirectory(d, root, "/hello")); |
968 | 344 |
969 | 345 ASSERT_TRUE(GetDirectory(d, root, "/hello/a")); |
968 | 346 ASSERT_EQ(1u, d.size()); |
347 ASSERT_EQ("test3", d[0].asString()); | |
348 | |
969 | 349 ASSERT_TRUE(GetDirectory(d, root, "/hello/world")); |
968 | 350 ASSERT_EQ(2u, d.size()); |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
351 |
969 | 352 ASSERT_TRUE(GetDirectory(d, root, "/hello/a/test3")); |
968 | 353 ASSERT_EQ(1u, d.size()); |
354 ASSERT_EQ("test4", d[0].asString()); | |
355 | |
1064 | 356 ASSERT_TRUE(GetDirectory(d, root, "/hello/world/test")); |
357 ASSERT_TRUE(GetDirectory(d, root, "/hello/world/test2")); | |
969 | 358 ASSERT_FALSE(GetDirectory(d, root, "/hello2")); |
968 | 359 |
360 testValue = 0; | |
969 | 361 ASSERT_TRUE(HandleGet(root, "/hello/world/test")); |
968 | 362 ASSERT_EQ(testValue, 1); |
969 | 363 ASSERT_TRUE(HandleGet(root, "/hello/world/test2")); |
968 | 364 ASSERT_EQ(testValue, 2); |
969 | 365 ASSERT_TRUE(HandleGet(root, "/hello/b/test3/test4")); |
968 | 366 ASSERT_EQ(testValue, 3); |
969 | 367 ASSERT_FALSE(HandleGet(root, "/hello/b/test3/test")); |
968 | 368 ASSERT_EQ(testValue, 3); |
969 | 369 ASSERT_TRUE(HandleGet(root, "/hello2/a/b")); |
968 | 370 ASSERT_EQ(testValue, 4); |
966
886652370ff2
accelerating REST API matching
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
831
diff
changeset
|
371 } |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
372 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
373 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
374 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
375 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
376 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
377 namespace |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
378 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
379 class AcceptHandler : public HttpContentNegociation::IHandler |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
380 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
381 private: |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
382 std::string type_; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
383 std::string subtype_; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
384 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
385 public: |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
386 AcceptHandler() |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
387 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
388 Reset(); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
389 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
390 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
391 void Reset() |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
392 { |
1782 | 393 Handle("nope", "nope"); |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
394 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
395 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
396 const std::string& GetType() const |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
397 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
398 return type_; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
399 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
400 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
401 const std::string& GetSubType() const |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
402 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
403 return subtype_; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
404 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
405 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
406 virtual void Handle(const std::string& type, |
2924
22524fd06225
macros ORTHANC_OVERRIDE and ORTHANC_FINAL
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2824
diff
changeset
|
407 const std::string& subtype) ORTHANC_OVERRIDE |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
408 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
409 type_ = type; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
410 subtype_ = subtype; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
411 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
412 }; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
413 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
414 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
415 |
1782 | 416 TEST(RestApi, HttpContentNegociation) |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
417 { |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
418 // Reference: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
419 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
420 AcceptHandler h; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
421 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
422 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
423 HttpContentNegociation d; |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
424 d.Register("audio/mp3", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
425 d.Register("audio/basic", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
426 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
427 ASSERT_TRUE(d.Apply("audio/*; q=0.2, audio/basic")); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
428 ASSERT_EQ("audio", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
429 ASSERT_EQ("basic", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
430 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
431 ASSERT_TRUE(d.Apply("audio/*; q=0.2, audio/nope")); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
432 ASSERT_EQ("audio", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
433 ASSERT_EQ("mp3", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
434 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
435 ASSERT_FALSE(d.Apply("application/*; q=0.2, application/pdf")); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
436 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
437 ASSERT_TRUE(d.Apply("*/*; application/*; q=0.2, application/pdf")); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
438 ASSERT_EQ("audio", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
439 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
440 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
441 // "This would be interpreted as "text/html and text/x-c are the |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
442 // preferred media types, but if they do not exist, then send the |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
443 // text/x-dvi entity, and if that does not exist, send the |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
444 // text/plain entity."" |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
445 const std::string T1 = "text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c"; |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
446 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
447 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
448 HttpContentNegociation d; |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
449 d.Register("text/plain", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
450 d.Register("text/html", h); |
1782 | 451 d.Register("text/x-dvi", h); |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
452 ASSERT_TRUE(d.Apply(T1)); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
453 ASSERT_EQ("text", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
454 ASSERT_EQ("html", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
455 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
456 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
457 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
458 HttpContentNegociation d; |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
459 d.Register("text/plain", h); |
1782 | 460 d.Register("text/x-dvi", h); |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
461 d.Register("text/x-c", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
462 ASSERT_TRUE(d.Apply(T1)); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
463 ASSERT_EQ("text", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
464 ASSERT_EQ("x-c", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
465 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
466 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
467 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
468 HttpContentNegociation d; |
1782 | 469 d.Register("text/plain", h); |
470 d.Register("text/x-dvi", h); | |
471 d.Register("text/x-c", h); | |
472 d.Register("text/html", h); | |
473 ASSERT_TRUE(d.Apply(T1)); | |
474 ASSERT_EQ("text", h.GetType()); | |
475 ASSERT_TRUE(h.GetSubType() == "x-c" || h.GetSubType() == "html"); | |
476 } | |
477 | |
478 { | |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
479 HttpContentNegociation d; |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
480 d.Register("text/plain", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
481 d.Register("text/x-dvi", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
482 ASSERT_TRUE(d.Apply(T1)); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
483 ASSERT_EQ("text", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
484 ASSERT_EQ("x-dvi", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
485 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
486 |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
487 { |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
488 HttpContentNegociation d; |
1781
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
489 d.Register("text/plain", h); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
490 ASSERT_TRUE(d.Apply(T1)); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
491 ASSERT_EQ("text", h.GetType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
492 ASSERT_EQ("plain", h.GetSubType()); |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
493 } |
5ad4e4d92ecb
AcceptMediaDispatcher bootstrap
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1545
diff
changeset
|
494 } |
2800
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
495 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
496 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
497 TEST(WebServiceParameters, Serialization) |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
498 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
499 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
500 Json::Value v = Json::arrayValue; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
501 v.append("http://localhost:8042/"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
502 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
503 WebServiceParameters p(v); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
504 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
505 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
506 Json::Value v2; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
507 p.Serialize(v2, false, true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
508 ASSERT_EQ(v, v2); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
509 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
510 WebServiceParameters p2(v2); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
511 ASSERT_EQ("http://localhost:8042/", p2.GetUrl()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
512 ASSERT_TRUE(p2.GetUsername().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
513 ASSERT_TRUE(p2.GetPassword().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
514 ASSERT_TRUE(p2.GetCertificateFile().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
515 ASSERT_TRUE(p2.GetCertificateKeyFile().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
516 ASSERT_TRUE(p2.GetCertificateKeyPassword().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
517 ASSERT_FALSE(p2.IsPkcs11Enabled()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
518 } |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
519 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
520 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
521 Json::Value v = Json::arrayValue; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
522 v.append("http://localhost:8042/"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
523 v.append("user"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
524 v.append("pass"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
525 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
526 WebServiceParameters p(v); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
527 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
528 ASSERT_EQ("http://localhost:8042/", p.GetUrl()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
529 ASSERT_EQ("user", p.GetUsername()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
530 ASSERT_EQ("pass", p.GetPassword()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
531 ASSERT_TRUE(p.GetCertificateFile().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
532 ASSERT_TRUE(p.GetCertificateKeyFile().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
533 ASSERT_TRUE(p.GetCertificateKeyPassword().empty()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
534 ASSERT_FALSE(p.IsPkcs11Enabled()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
535 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
536 Json::Value v2; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
537 p.Serialize(v2, false, true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
538 ASSERT_EQ(v, v2); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
539 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
540 p.Serialize(v2, false, false /* no password */); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
541 ASSERT_EQ(Json::arrayValue, v2.type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
542 ASSERT_EQ(3u, v2.size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
543 ASSERT_EQ("http://localhost:8042/", v2[0u].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
544 ASSERT_EQ("user", v2[1u].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
545 ASSERT_TRUE(v2[2u].asString().empty()); |
4204 | 546 |
547 WebServiceParameters p2(v2); // Test decoding | |
548 ASSERT_EQ("http://localhost:8042/", p2.GetUrl()); | |
2800
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
549 } |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
550 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
551 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
552 Json::Value v = Json::arrayValue; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
553 v.append("http://localhost:8042/"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
554 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
555 WebServiceParameters p(v); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
556 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
557 p.SetPkcs11Enabled(true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
558 ASSERT_TRUE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
559 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
560 Json::Value v2; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
561 p.Serialize(v2, false, true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
562 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
563 ASSERT_EQ(Json::objectValue, v2.type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
564 ASSERT_EQ(3u, v2.size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
565 ASSERT_EQ("http://localhost:8042/", v2["Url"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
566 ASSERT_TRUE(v2["Pkcs11"].asBool()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
567 ASSERT_EQ(Json::objectValue, v2["HttpHeaders"].type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
568 ASSERT_EQ(0u, v2["HttpHeaders"].size()); |
4204 | 569 |
570 WebServiceParameters p2(v2); // Test decoding | |
571 ASSERT_EQ("http://localhost:8042/", p2.GetUrl()); | |
2800
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
572 } |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
573 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
574 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
575 Json::Value v = Json::arrayValue; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
576 v.append("http://localhost:8042/"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
577 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
578 WebServiceParameters p(v); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
579 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
580 p.SetClientCertificate("a", "b", "c"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
581 ASSERT_TRUE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
582 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
583 Json::Value v2; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
584 p.Serialize(v2, false, true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
585 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
586 ASSERT_EQ(Json::objectValue, v2.type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
587 ASSERT_EQ(6u, v2.size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
588 ASSERT_EQ("http://localhost:8042/", v2["Url"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
589 ASSERT_EQ("a", v2["CertificateFile"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
590 ASSERT_EQ("b", v2["CertificateKeyFile"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
591 ASSERT_EQ("c", v2["CertificateKeyPassword"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
592 ASSERT_FALSE(v2["Pkcs11"].asBool()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
593 ASSERT_EQ(Json::objectValue, v2["HttpHeaders"].type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
594 ASSERT_EQ(0u, v2["HttpHeaders"].size()); |
4204 | 595 |
596 WebServiceParameters p2(v2); // Test decoding | |
597 ASSERT_EQ("http://localhost:8042/", p2.GetUrl()); | |
2800
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
598 } |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
599 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
600 { |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
601 Json::Value v = Json::arrayValue; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
602 v.append("http://localhost:8042/"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
603 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
604 WebServiceParameters p(v); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
605 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
606 p.AddHttpHeader("a", "b"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
607 p.AddHttpHeader("c", "d"); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
608 ASSERT_TRUE(p.IsAdvancedFormatNeeded()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
609 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
610 Json::Value v2; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
611 p.Serialize(v2, false, true); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
612 WebServiceParameters p2(v2); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
613 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
614 ASSERT_EQ(Json::objectValue, v2.type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
615 ASSERT_EQ(3u, v2.size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
616 ASSERT_EQ("http://localhost:8042/", v2["Url"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
617 ASSERT_FALSE(v2["Pkcs11"].asBool()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
618 ASSERT_EQ(Json::objectValue, v2["HttpHeaders"].type()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
619 ASSERT_EQ(2u, v2["HttpHeaders"].size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
620 ASSERT_EQ("b", v2["HttpHeaders"]["a"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
621 ASSERT_EQ("d", v2["HttpHeaders"]["c"].asString()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
622 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
623 std::set<std::string> a; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
624 p2.ListHttpHeaders(a); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
625 ASSERT_EQ(2u, a.size()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
626 ASSERT_TRUE(a.find("a") != a.end()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
627 ASSERT_TRUE(a.find("c") != a.end()); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
628 |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
629 std::string s; |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
630 ASSERT_TRUE(p2.LookupHttpHeader(s, "a")); ASSERT_EQ("b", s); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
631 ASSERT_TRUE(p2.LookupHttpHeader(s, "c")); ASSERT_EQ("d", s); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
632 ASSERT_FALSE(p2.LookupHttpHeader(s, "nope")); |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
633 } |
dc7330089736
"OrthancPeers" configuration option now allows to specify HTTP headers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2543
diff
changeset
|
634 } |
2823
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
635 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
636 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
637 TEST(WebServiceParameters, UserProperties) |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
638 { |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
639 Json::Value v = Json::nullValue; |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
640 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
641 { |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
642 WebServiceParameters p; |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
643 p.SetUrl("http://localhost:8042/"); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
644 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
645 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
646 ASSERT_THROW(p.AddUserProperty("Url", "nope"), OrthancException); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
647 p.AddUserProperty("Hello", "world"); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
648 p.AddUserProperty("a", "b"); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
649 ASSERT_TRUE(p.IsAdvancedFormatNeeded()); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
650 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
651 p.Serialize(v, false, true); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
652 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
653 p.ClearUserProperties(); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
654 ASSERT_FALSE(p.IsAdvancedFormatNeeded()); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
655 } |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
656 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
657 { |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
658 WebServiceParameters p(v); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
659 ASSERT_TRUE(p.IsAdvancedFormatNeeded()); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
660 ASSERT_TRUE(p.GetHttpHeaders().empty()); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
661 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
662 std::set<std::string> tmp; |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
663 p.ListUserProperties(tmp); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
664 ASSERT_EQ(2u, tmp.size()); |
2824 | 665 ASSERT_TRUE(tmp.find("a") != tmp.end()); |
666 ASSERT_TRUE(tmp.find("Hello") != tmp.end()); | |
667 ASSERT_TRUE(tmp.find("hello") == tmp.end()); | |
2823
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
668 |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
669 std::string s; |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
670 ASSERT_TRUE(p.LookupUserProperty(s, "a")); ASSERT_TRUE(s == "b"); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
671 ASSERT_TRUE(p.LookupUserProperty(s, "Hello")); ASSERT_TRUE(s == "world"); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
672 ASSERT_FALSE(p.LookupUserProperty(s, "hello")); |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
673 } |
807169f85ba9
OrthancPluginGetPeerUserProperty()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2800
diff
changeset
|
674 } |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
675 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
676 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
677 TEST(StringMatcher, Basic) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
678 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
679 StringMatcher matcher("---"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
680 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
681 ASSERT_THROW(matcher.GetMatchBegin(), OrthancException); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
682 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
683 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
684 const std::string s = ""; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
685 ASSERT_FALSE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
686 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
687 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
688 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
689 const std::string s = "abc----def"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
690 ASSERT_TRUE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
691 ASSERT_EQ(3, std::distance(s.begin(), matcher.GetMatchBegin())); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
692 ASSERT_EQ("---", std::string(matcher.GetMatchBegin(), matcher.GetMatchEnd())); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
693 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
694 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
695 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
696 const std::string s = "abc---"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
697 ASSERT_TRUE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
698 ASSERT_EQ(3, std::distance(s.begin(), matcher.GetMatchBegin())); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
699 ASSERT_EQ(s.end(), matcher.GetMatchEnd()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
700 ASSERT_EQ("---", std::string(matcher.GetMatchBegin(), matcher.GetMatchEnd())); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
701 ASSERT_EQ("", std::string(matcher.GetMatchEnd(), s.end())); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
702 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
703 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
704 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
705 const std::string s = "abc--def"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
706 ASSERT_FALSE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
707 ASSERT_THROW(matcher.GetMatchBegin(), OrthancException); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
708 ASSERT_THROW(matcher.GetMatchEnd(), OrthancException); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
709 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
710 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
711 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
712 std::string s(10u, '\0'); // String with null values |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
713 ASSERT_EQ(10u, s.size()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
714 ASSERT_EQ(10u, s.size()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
715 ASSERT_FALSE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
716 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
717 s[9] = '-'; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
718 ASSERT_FALSE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
719 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
720 s[8] = '-'; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
721 ASSERT_FALSE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
722 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
723 s[7] = '-'; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
724 ASSERT_TRUE(matcher.Apply(s)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
725 ASSERT_EQ(s.c_str() + 7, matcher.GetPointerBegin()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
726 ASSERT_EQ(s.c_str() + 10, matcher.GetPointerEnd()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
727 ASSERT_EQ(s.end() - 3, matcher.GetMatchBegin()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
728 ASSERT_EQ(s.end(), matcher.GetMatchEnd()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
729 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
730 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
731 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
732 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
733 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
734 class MultipartTester : public MultipartStreamReader::IHandler |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
735 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
736 private: |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
737 struct Part |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
738 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
739 MultipartStreamReader::HttpHeaders headers_; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
740 std::string data_; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
741 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
742 Part(const MultipartStreamReader::HttpHeaders& headers, |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
743 const void* part, |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
744 size_t size) : |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
745 headers_(headers), |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
746 data_(reinterpret_cast<const char*>(part), size) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
747 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
748 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
749 }; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
750 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
751 std::vector<Part> parts_; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
752 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
753 public: |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
754 virtual void HandlePart(const MultipartStreamReader::HttpHeaders& headers, |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
755 const void* part, |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
756 size_t size) |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
757 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
758 parts_.push_back(Part(headers, part, size)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
759 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
760 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
761 unsigned int GetCount() const |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
762 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
763 return parts_.size(); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
764 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
765 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
766 MultipartStreamReader::HttpHeaders& GetHeaders(size_t i) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
767 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
768 return parts_[i].headers_; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
769 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
770 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
771 const std::string& GetData(size_t i) const |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
772 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
773 return parts_[i].data_; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
774 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
775 }; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
776 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
777 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
778 TEST(MultipartStreamReader, ParseHeaders) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
779 { |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
780 std::string ct, b, st, header; |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
781 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
782 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
783 MultipartStreamReader::HttpHeaders h; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
784 h["hello"] = "world"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
785 h["Content-Type"] = "world"; // Should be in lower-case |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
786 h["CONTENT-type"] = "world"; // Should be in lower-case |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
787 ASSERT_FALSE(MultipartStreamReader::GetMainContentType(header, h)); |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
788 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
789 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
790 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
791 MultipartStreamReader::HttpHeaders h; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
792 h["content-type"] = "world"; |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
793 ASSERT_TRUE(MultipartStreamReader::GetMainContentType(header, h)); |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
794 ASSERT_EQ(header, "world"); |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
795 ASSERT_FALSE(MultipartStreamReader::ParseMultipartContentType(ct, st, b, header)); |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
796 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
797 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
798 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
799 MultipartStreamReader::HttpHeaders h; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
800 h["content-type"] = "multipart/related; dummy=value; boundary=1234; hello=world"; |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
801 ASSERT_TRUE(MultipartStreamReader::GetMainContentType(header, h)); |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
802 ASSERT_EQ(header, h["content-type"]); |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
803 ASSERT_TRUE(MultipartStreamReader::ParseMultipartContentType(ct, st, b, header)); |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
804 ASSERT_EQ(ct, "multipart/related"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
805 ASSERT_EQ(b, "1234"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
806 ASSERT_TRUE(st.empty()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
807 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
808 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
809 { |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
810 ASSERT_FALSE(MultipartStreamReader::ParseMultipartContentType |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
811 (ct, st, b, "multipart/related; boundary=")); // Empty boundary |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
812 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
813 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
814 { |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
815 ASSERT_TRUE(MultipartStreamReader::ParseMultipartContentType |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
816 (ct, st, b, "Multipart/Related; TYPE=Application/Dicom; Boundary=heLLO")); |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
817 ASSERT_EQ(ct, "multipart/related"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
818 ASSERT_EQ(b, "heLLO"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
819 ASSERT_EQ(st, "application/dicom"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
820 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
821 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
822 { |
3399
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
823 ASSERT_TRUE(MultipartStreamReader::ParseMultipartContentType |
4e8205871967
OrthancPluginRegisterMultipartRestCallback() is working
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3398
diff
changeset
|
824 (ct, st, b, "Multipart/Related; type=\"application/DICOM\"; Boundary=a")); |
3398
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
825 ASSERT_EQ(ct, "multipart/related"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
826 ASSERT_EQ(b, "a"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
827 ASSERT_EQ(st, "application/dicom"); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
828 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
829 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
830 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
831 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
832 TEST(MultipartStreamReader, BytePerByte) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
833 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
834 std::string stream = "GARBAGE"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
835 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
836 std::string boundary = "123456789123456789"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
837 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
838 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
839 for (size_t i = 0; i < 10; i++) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
840 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
841 std::string f = "hello " + boost::lexical_cast<std::string>(i); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
842 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
843 stream += "\r\n--" + boundary + "\r\n"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
844 if (i % 2 == 0) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
845 stream += "Content-Length: " + boost::lexical_cast<std::string>(f.size()) + "\r\n"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
846 stream += "Content-Type: toto " + boost::lexical_cast<std::string>(i) + "\r\n\r\n"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
847 stream += f; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
848 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
849 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
850 stream += "\r\n--" + boundary + "--"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
851 stream += "GARBAGE"; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
852 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
853 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
854 for (unsigned int k = 0; k < 2; k++) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
855 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
856 MultipartTester decoded; |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
857 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
858 MultipartStreamReader reader(boundary); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
859 reader.SetBlockSize(1); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
860 reader.SetHandler(decoded); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
861 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
862 if (k == 0) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
863 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
864 for (size_t i = 0; i < stream.size(); i++) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
865 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
866 reader.AddChunk(&stream[i], 1); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
867 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
868 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
869 else |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
870 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
871 reader.AddChunk(stream); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
872 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
873 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
874 reader.CloseStream(); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
875 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
876 ASSERT_EQ(10u, decoded.GetCount()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
877 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
878 for (size_t i = 0; i < 10; i++) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
879 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
880 ASSERT_EQ("hello " + boost::lexical_cast<std::string>(i), decoded.GetData(i)); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
881 ASSERT_EQ("toto " + boost::lexical_cast<std::string>(i), decoded.GetHeaders(i)["content-type"]); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
882 |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
883 if (i % 2 == 0) |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
884 { |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
885 ASSERT_EQ(2u, decoded.GetHeaders(i).size()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
886 ASSERT_TRUE(decoded.GetHeaders(i).find("content-length") != decoded.GetHeaders(i).end()); |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
887 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
888 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
889 } |
4acd1431e603
new classes: StringMatcher and MultipartStreamReader
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
3060
diff
changeset
|
890 } |
4072
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
891 |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
892 |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
893 TEST(WebServiceParameters, Url) |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
894 { |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
895 WebServiceParameters w; |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
896 |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
897 ASSERT_THROW(w.SetUrl("ssh://coucou"), OrthancException); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
898 w.SetUrl("http://coucou"); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
899 w.SetUrl("https://coucou"); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
900 ASSERT_THROW(w.SetUrl("httpss://coucou"), OrthancException); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
901 ASSERT_THROW(w.SetUrl(""), OrthancException); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
902 |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
903 // New in Orthanc 1.7.2: Allow relative URLs (for DICOMweb in Stone) |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
904 w.SetUrl("coucou"); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
905 w.SetUrl("/coucou"); |
3dda0d73193c
fix doxygen, more tolerant WebServiceParameters::SetUrl()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4063
diff
changeset
|
906 } |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
907 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
908 |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
909 TEST(ChunkedBuffer, DISABLED_Large) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
910 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
911 const size_t LARGE = 60 * 1024 * 1024; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
912 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
913 ChunkedBuffer b; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
914 for (size_t i = 0; i < LARGE; i++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
915 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
916 b.AddChunk(boost::lexical_cast<std::string>(i % 10)); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
917 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
918 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
919 std::string s; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
920 b.Flatten(s); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
921 ASSERT_EQ(LARGE, s.size()); |
4157
86e99e08ba52
fix compiler warnings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4151
diff
changeset
|
922 ASSERT_EQ(0u, b.GetNumBytes()); |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
923 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
924 for (size_t i = 0; i < LARGE; i++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
925 { |
4157
86e99e08ba52
fix compiler warnings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4151
diff
changeset
|
926 ASSERT_EQ(static_cast<char>('0' + (i % 10)), s[i]); |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
927 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
928 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
929 b.Flatten(s); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
930 ASSERT_EQ(0u, s.size()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
931 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
932 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
933 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
934 TEST(ChunkedBuffer, Pending) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
935 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
936 ChunkedBuffer b; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
937 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
938 for (size_t pendingSize = 0; pendingSize < 16; pendingSize++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
939 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
940 b.SetPendingBufferSize(pendingSize); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
941 ASSERT_EQ(pendingSize, b.GetPendingBufferSize()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
942 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
943 unsigned int pos = 0; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
944 unsigned int iteration = 0; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
945 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
946 while (pos < 1024) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
947 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
948 size_t chunkSize = (iteration % 17); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
949 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
950 std::string chunk; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
951 chunk.resize(chunkSize); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
952 for (size_t i = 0; i < chunkSize; i++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
953 { |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
954 chunk[i] = '0' + (pos % 10); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
955 pos++; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
956 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
957 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
958 b.AddChunk(chunk); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
959 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
960 iteration ++; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
961 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
962 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
963 std::string s; |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
964 b.Flatten(s); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
965 ASSERT_EQ(0u, b.GetNumBytes()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
966 ASSERT_EQ(pos, s.size()); |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
967 |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
968 for (size_t i = 0; i < s.size(); i++) |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
969 { |
4157
86e99e08ba52
fix compiler warnings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4151
diff
changeset
|
970 ASSERT_EQ(static_cast<char>('0' + (i % 10)), s[i]); |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
971 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
972 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
973 } |
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
974 |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
975 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
976 |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
977 #if ORTHANC_SANDBOXED != 1 |
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
978 |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
979 namespace |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
980 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
981 class TotoBody : public HttpClient::IRequestBody |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
982 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
983 private: |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
984 size_t size_; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
985 size_t chunkSize_; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
986 size_t pos_; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
987 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
988 public: |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
989 TotoBody(size_t size, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
990 size_t chunkSize) : |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
991 size_(size), |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
992 chunkSize_(chunkSize), |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
993 pos_(0) |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
994 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
995 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
996 |
4204 | 997 virtual bool ReadNextChunk(std::string& chunk) ORTHANC_OVERRIDE |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
998 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
999 if (pos_ == size_) |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1000 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1001 return false; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1002 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1003 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1004 chunk.clear(); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1005 chunk.resize(chunkSize_); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1006 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1007 size_t i = 0; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1008 while (pos_ < size_ && |
4150
b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4148
diff
changeset
|
1009 i < chunk.size()) |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1010 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1011 chunk[i] = '0' + (pos_ % 7); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1012 pos_++; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1013 i++; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1014 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1015 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1016 if (i < chunk.size()) |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1017 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1018 chunk.erase(i, chunk.size()); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1019 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1020 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1021 return true; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1022 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1023 }; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1024 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1025 class TotoServer : public IHttpHandler |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1026 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1027 public: |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1028 virtual bool CreateChunkedRequestReader(std::unique_ptr<IChunkedRequestReader>& target, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1029 RequestOrigin origin, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1030 const char* remoteIp, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1031 const char* username, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1032 HttpMethod method, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1033 const UriComponents& uri, |
4204 | 1034 const Arguments& headers) ORTHANC_OVERRIDE |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1035 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1036 return false; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1037 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1038 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1039 virtual bool Handle(HttpOutput& output, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1040 RequestOrigin origin, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1041 const char* remoteIp, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1042 const char* username, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1043 HttpMethod method, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1044 const UriComponents& uri, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1045 const Arguments& headers, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1046 const GetArguments& getArguments, |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1047 const void* bodyData, |
4204 | 1048 size_t bodySize) ORTHANC_OVERRIDE |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1049 { |
4158
32ac045109a6
fix compiler warnings
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4157
diff
changeset
|
1050 printf("received %d\n", static_cast<int>(bodySize)); |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1051 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1052 const uint8_t* b = reinterpret_cast<const uint8_t*>(bodyData); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1053 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1054 for (size_t i = 0; i < bodySize; i++) |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1055 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1056 if (b[i] != ('0' + i % 7)) |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1057 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1058 throw; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1059 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1060 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1061 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1062 output.Answer("ok"); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1063 return true; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1064 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1065 }; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1066 } |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1067 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1068 |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
1069 |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1070 #include "../Sources/HttpServer/HttpServer.h" |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1071 |
4151
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1072 TEST(HttpClient, DISABLED_Issue156_Slow) |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1073 { |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1074 // https://bugs.orthanc-server.com/show_bug.cgi?id=156 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1075 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1076 TotoServer handler; |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1077 HttpServer server; |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1078 server.SetPortNumber(5000); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1079 server.Register(handler); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1080 server.Start(); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1081 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1082 WebServiceParameters w; |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1083 w.SetUrl("http://localhost:5000"); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1084 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1085 // This is slow in Orthanc <= 1.5.8 (issue 156) |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1086 TotoBody body(600 * 1024 * 1024, 6 * 1024 * 1024 - 17); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1087 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1088 HttpClient c(w, "toto"); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1089 c.SetMethod(HttpMethod_Post); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1090 c.AddHeader("Expect", ""); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1091 c.AddHeader("Transfer-Encoding", "chunked"); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1092 c.SetBody(body); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1093 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1094 std::string s; |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1095 ASSERT_TRUE(c.Apply(s)); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1096 ASSERT_EQ("ok", s); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1097 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1098 server.Stop(); |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1099 } |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1100 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1101 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1102 TEST(HttpClient, DISABLED_Issue156_Crash) |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1103 { |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1104 TotoServer handler; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1105 HttpServer server; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1106 server.SetPortNumber(5000); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1107 server.Register(handler); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1108 server.Start(); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1109 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1110 WebServiceParameters w; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1111 w.SetUrl("http://localhost:5000"); |
4151
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1112 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1113 // This crashes Orthanc 1.6.0 to 1.7.2 |
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1114 TotoBody body(32 * 1024, 1); |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1115 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1116 HttpClient c(w, "toto"); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1117 c.SetMethod(HttpMethod_Post); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1118 c.AddHeader("Expect", ""); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1119 c.AddHeader("Transfer-Encoding", "chunked"); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1120 c.SetBody(body); |
4151
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1121 |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1122 std::string s; |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1123 ASSERT_TRUE(c.Apply(s)); |
4151
8c559dd5034b
Fix possible crash in HttpClient if sending multipart body (can occur in STOW-RS)
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4150
diff
changeset
|
1124 ASSERT_EQ("ok", s); |
4148
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1125 |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1126 server.Stop(); |
732ad6c618ba
removing ChunkedBuffer::AddChunkDestructive()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4119
diff
changeset
|
1127 } |
4325
b96aedfa8cc1
unit tests now running in WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4204
diff
changeset
|
1128 #endif |