Mercurial > hg > orthanc
annotate UnitTests/RestApi.cpp @ 221:e7432706b354
accessors to storage
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 29 Nov 2012 18:01:06 +0100 |
parents | 96b7918a6a18 |
children | bd934af46ba4 |
rev | line source |
---|---|
209 | 1 #include "gtest/gtest.h" |
2 | |
3 #include <ctype.h> | |
4 #include <glog/logging.h> | |
5 | |
6 #include "../Core/RestApi/RestApi.h" | |
221
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
7 #include "../Core/Uuid.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
8 #include "../Core/OrthancException.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
9 #include "../Core/Compression/ZlibCompressor.h" |
209 | 10 |
11 using namespace Orthanc; | |
12 | |
13 TEST(RestApi, RestApiPath) | |
14 { | |
15 RestApiPath::Components args; | |
16 UriComponents trail; | |
17 | |
18 { | |
19 RestApiPath uri("/coucou/{abc}/d/*"); | |
20 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d/e/f/g")); | |
21 ASSERT_EQ(1u, args.size()); | |
22 ASSERT_EQ(3u, trail.size()); | |
23 ASSERT_EQ("moi", args["abc"]); | |
24 ASSERT_EQ("e", trail[0]); | |
25 ASSERT_EQ("f", trail[1]); | |
26 ASSERT_EQ("g", trail[2]); | |
27 | |
28 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi/f")); | |
29 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d/")); | |
30 ASSERT_FALSE(uri.Match(args, trail, "/a/moi/d")); | |
31 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi")); | |
32 } | |
33 | |
34 { | |
35 RestApiPath uri("/coucou/{abc}/d"); | |
36 ASSERT_FALSE(uri.Match(args, trail, "/coucou/moi/d/e/f/g")); | |
37 ASSERT_TRUE(uri.Match(args, trail, "/coucou/moi/d")); | |
38 ASSERT_EQ(1u, args.size()); | |
39 ASSERT_EQ(0u, trail.size()); | |
40 ASSERT_EQ("moi", args["abc"]); | |
41 } | |
42 | |
43 { | |
44 RestApiPath uri("/*"); | |
45 ASSERT_TRUE(uri.Match(args, trail, "/a/b/c")); | |
46 ASSERT_EQ(0u, args.size()); | |
47 ASSERT_EQ(3u, trail.size()); | |
48 ASSERT_EQ("a", trail[0]); | |
49 ASSERT_EQ("b", trail[1]); | |
50 ASSERT_EQ("c", trail[2]); | |
51 } | |
52 } | |
53 | |
54 | |
55 | |
210
96b7918a6a18
start of the refactoring of the Orthanc REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
209
diff
changeset
|
56 #if 0 |
209 | 57 |
58 #include "../Core/HttpServer/MongooseServer.h" | |
59 | |
60 struct Tutu : public IDynamicObject | |
61 { | |
62 static void Toto(RestApi::GetCall& call) | |
63 { | |
64 printf("DONE\n"); | |
65 Json::Value a = Json::objectValue; | |
66 a["Tutu"] = "Toto"; | |
67 a["Youpie"] = call.GetArgument("coucou", "nope"); | |
68 a["Toto"] = call.GetUriComponent("test", "nope"); | |
69 call.GetOutput().AnswerJson(a); | |
70 } | |
71 }; | |
72 | |
73 | |
74 | |
75 TEST(RestApi, Tutu) | |
76 { | |
77 MongooseServer httpServer; | |
78 httpServer.SetPortNumber(8042); | |
79 httpServer.Start(); | |
80 | |
81 RestApi* api = new RestApi; | |
82 httpServer.RegisterHandler(api); | |
83 api->Register("/coucou/{test}/a/*", Tutu::Toto); | |
84 | |
85 httpServer.Start(); | |
86 /*LOG(WARNING) << "REST has started"; | |
87 Toolbox::ServerBarrier();*/ | |
88 } | |
210
96b7918a6a18
start of the refactoring of the Orthanc REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
209
diff
changeset
|
89 |
96b7918a6a18
start of the refactoring of the Orthanc REST API
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
209
diff
changeset
|
90 #endif |
221
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
91 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
92 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
93 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
94 #include "../Core/FileStorage.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
95 #include "../Core/HttpServer/FilesystemHttpSender.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
96 #include "../Core/HttpServer/BufferHttpSender.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
97 #include "../Core/FileStorage/FileStorageAccessor.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
98 #include "../Core/FileStorage/CompressedFileStorageAccessor.h" |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
99 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
100 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
101 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
102 TEST(FileStorageAccessor, Simple) |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
103 { |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
104 FileStorage s("FileStorageUnitTests"); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
105 FileStorageAccessor accessor(s); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
106 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
107 std::string data = "Hello world"; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
108 std::string id = accessor.Write(data); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
109 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
110 std::string r; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
111 accessor.Read(r, id); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
112 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
113 ASSERT_EQ(data, r); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
114 } |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
115 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
116 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
117 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
118 TEST(FileStorageAccessor, NoCompression) |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
119 { |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
120 FileStorage s("FileStorageUnitTests"); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
121 CompressedFileStorageAccessor accessor(s); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
122 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
123 accessor.SetCompressionForNextOperations(CompressionType_None); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
124 std::string data = "Hello world"; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
125 std::string id = accessor.Write(data); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
126 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
127 std::string r; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
128 accessor.Read(r, id); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
129 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
130 ASSERT_EQ(data, r); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
131 } |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
132 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
133 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
134 TEST(FileStorageAccessor, Compression) |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
135 { |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
136 FileStorage s("FileStorageUnitTests"); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
137 CompressedFileStorageAccessor accessor(s); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
138 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
139 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
140 std::string data = "Hello world"; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
141 std::string id = accessor.Write(data); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
142 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
143 std::string r; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
144 accessor.Read(r, id); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
145 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
146 ASSERT_EQ(data, r); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
147 } |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
148 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
149 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
150 TEST(FileStorageAccessor, Mix) |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
151 { |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
152 FileStorage s("FileStorageUnitTests"); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
153 CompressedFileStorageAccessor accessor(s); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
154 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
155 std::string r; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
156 std::string compressedData = "Hello"; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
157 std::string uncompressedData = "HelloWorld"; |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
158 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
159 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
160 std::string compressedId = accessor.Write(compressedData); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
161 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
162 accessor.SetCompressionForNextOperations(CompressionType_None); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
163 std::string uncompressedId = accessor.Write(uncompressedData); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
164 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
165 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
166 accessor.Read(r, compressedId); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
167 ASSERT_EQ(compressedData, r); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
168 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
169 accessor.SetCompressionForNextOperations(CompressionType_None); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
170 accessor.Read(r, compressedId); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
171 ASSERT_NE(compressedData, r); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
172 |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
173 accessor.SetCompressionForNextOperations(CompressionType_Zlib); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
174 ASSERT_THROW(accessor.Read(r, uncompressedId), OrthancException); |
e7432706b354
accessors to storage
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
210
diff
changeset
|
175 } |