1 //******************************************************************
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
22 #include <OCPlatform.h>
24 #include <gtest/gtest.h>
28 namespace OCResourceTest
32 void onObserve(const HeaderOptions, const OCRepresentation&, const int&, const int&)
36 void onGetPut(const HeaderOptions&, const OCRepresentation& , const int eCode)
38 EXPECT_EQ(eCode, OC_STACK_OK);
41 void foundResource(std::shared_ptr<OCResource> )
45 void deleteResponse(const HeaderOptions&, const int)
50 OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
52 OCConnectivityType connectivityType = CT_DEFAULT;
53 std::vector<std::string> types = {"intel.rpost"};
54 std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
56 auto ret = OCPlatform::constructResourceObject(host, uri,
57 connectivityType, false, types, ifaces);
61 ADD_FAILURE() << "ConstructResourceObject result was null";
62 throw std::runtime_error("ConstructResourceObject result was null");
69 TEST(ConstructResourceTest, ConstructResourceObject)
71 EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
74 TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
76 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
79 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
81 EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
84 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
86 EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
89 TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
91 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
94 TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
96 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
97 EXPECT_TRUE(resource != NULL);
98 EXPECT_EQ(OC_STACK_OK, resource->get(OC::QueryParamsMap(), &onGetPut));
102 TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
104 OCResource::Ptr resource = ConstructResourceObject("", "coap://192.168.1.2:5000");
105 EXPECT_TRUE(resource != NULL);
106 EXPECT_THROW(resource->get(OC::QueryParamsMap(), &onGetPut), OC::OCException);
109 TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
111 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
112 EXPECT_TRUE(resource != NULL);
113 EXPECT_EQ(OC_STACK_OK,
114 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::HighQos));
117 TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
119 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
120 EXPECT_TRUE(resource != NULL);
121 EXPECT_EQ(OC_STACK_OK,
122 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::LowQos));
125 TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
127 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
128 EXPECT_TRUE(resource != NULL);
129 EXPECT_EQ(OC_STACK_OK,
130 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::MidQos));
133 TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
135 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
136 EXPECT_TRUE(resource != NULL);
137 EXPECT_EQ(OC_STACK_OK,
138 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
141 TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
143 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
144 EXPECT_TRUE(resource != NULL);
145 EXPECT_EQ(OC_STACK_OK,
146 resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
147 QualityOfService::NaQos));
150 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
152 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
153 EXPECT_TRUE(resource != NULL);
155 resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
156 QualityOfService::NaQos));
160 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
162 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
163 EXPECT_TRUE(resource != NULL);
165 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
168 TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
170 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
171 EXPECT_TRUE(resource != NULL);
172 EXPECT_EQ(OC_STACK_OK, resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut));
176 TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
178 OCRepresentation rep;
179 QueryParamsMap query = {};
180 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
181 EXPECT_TRUE(resource != NULL);
182 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut));
185 TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
187 OCRepresentation rep;
188 QueryParamsMap query = {};
189 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
190 EXPECT_TRUE(resource != NULL);
191 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::NaQos));
194 TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
196 OCRepresentation rep;
197 QueryParamsMap query = {};
198 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
199 EXPECT_TRUE(resource != NULL);
200 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::MidQos));
203 TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
205 OCRepresentation rep;
206 QueryParamsMap query = {};
207 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
208 EXPECT_TRUE(resource != NULL);
209 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::LowQos));
212 TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
214 OCRepresentation rep;
215 QueryParamsMap query = {};
216 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
217 EXPECT_TRUE(resource != NULL);
218 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::HighQos));
222 TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
224 OCRepresentation rep;
225 QueryParamsMap query = {};
226 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
227 EXPECT_TRUE(resource != NULL);
228 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut));
231 TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
233 OCRepresentation rep;
234 QueryParamsMap query = {};
235 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
236 EXPECT_TRUE(resource != NULL);
237 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::NaQos));
240 TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
242 OCRepresentation rep;
243 QueryParamsMap query = {};
244 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
245 EXPECT_TRUE(resource != NULL);
246 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::LowQos));
249 TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
251 OCRepresentation rep;
252 QueryParamsMap query = {};
253 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
254 EXPECT_TRUE(resource != NULL);
255 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::MidQos));
258 TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
260 OCRepresentation rep;
261 QueryParamsMap query = {};
262 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
263 EXPECT_TRUE(resource != NULL);
264 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::HighQos));
267 TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
269 OCRepresentation rep;
270 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
271 EXPECT_TRUE(resource != NULL);
272 EXPECT_EQ(OC_STACK_OK,
273 resource->put("", DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
276 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
278 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
279 EXPECT_TRUE(resource != NULL);
280 OCRepresentation rep;
282 resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
283 HeaderOptions headerOptions;
284 onGetPut(headerOptions, rep, OC_STACK_OK);
287 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
289 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
290 EXPECT_TRUE(resource != NULL);
291 OCRepresentation rep;
292 EXPECT_ANY_THROW(resource->put("", nullptr, rep, QueryParamsMap(), &onGetPut));
296 TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
298 OCResource::Ptr resource =
299 ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
300 EXPECT_TRUE(resource != NULL);
301 QueryParamsMap query = {};
302 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
305 TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
307 QueryParamsMap query = {};
308 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
309 EXPECT_TRUE(resource != NULL);
310 EXPECT_EQ(OC_STACK_OK,
311 resource->observe(ObserveType::ObserveAll, query, &onObserve,
312 QualityOfService::LowQos));
315 TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
317 QueryParamsMap query = {};
318 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
319 EXPECT_TRUE(resource != NULL);
320 EXPECT_EQ(OC_STACK_OK,
321 resource->observe(ObserveType::ObserveAll, query, &onObserve,
322 QualityOfService::NaQos));
325 TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
327 QueryParamsMap query = {};
328 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
329 EXPECT_TRUE(resource != NULL);
330 EXPECT_EQ(OC_STACK_OK,
331 resource->observe(ObserveType::ObserveAll, query, &onObserve,
332 QualityOfService::MidQos));
335 TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
337 QueryParamsMap query = {};
338 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
339 EXPECT_TRUE(resource != NULL);
340 EXPECT_EQ(OC_STACK_OK,
341 resource->observe(ObserveType::ObserveAll, query, &onObserve,
342 QualityOfService::HighQos));
345 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
347 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
348 EXPECT_TRUE(resource != NULL);
349 QueryParamsMap query = {};
350 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
351 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve());
354 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
356 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
357 EXPECT_TRUE(resource != NULL);
358 QueryParamsMap query = {};
359 EXPECT_EQ(OC_STACK_OK,
360 resource->observe(ObserveType::ObserveAll, query, &onObserve,
361 QualityOfService::NaQos));
362 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
365 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
367 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
368 EXPECT_TRUE(resource != NULL);
369 QueryParamsMap query = {};
370 EXPECT_EQ(OC_STACK_OK,
371 resource->observe(ObserveType::ObserveAll, query, &onObserve,
372 QualityOfService::LowQos));
373 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
376 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
378 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
379 EXPECT_TRUE(resource != NULL);
380 QueryParamsMap query = {};
381 EXPECT_EQ(OC_STACK_OK,
382 resource->observe(ObserveType::ObserveAll, query, &onObserve,
383 QualityOfService::MidQos));
384 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::MidQos));
387 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
389 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
390 EXPECT_TRUE(resource != NULL);
391 QueryParamsMap query = {};
392 EXPECT_EQ(OC_STACK_OK,
393 resource->observe(ObserveType::ObserveAll, query, &onObserve,
394 QualityOfService::HighQos));
395 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::HighQos));
399 TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
401 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
402 EXPECT_TRUE(resource != NULL);
403 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse));
406 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
408 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
409 EXPECT_TRUE(resource != NULL);
410 EXPECT_EQ(OC_STACK_OK,
411 resource->deleteResource(&deleteResponse, QualityOfService::LowQos));
414 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
416 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
417 EXPECT_TRUE(resource != NULL);
418 EXPECT_EQ(OC_STACK_OK,
419 resource->deleteResource(&deleteResponse, QualityOfService::MidQos));
422 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
424 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
425 EXPECT_TRUE(resource != NULL);
426 EXPECT_EQ(OC_STACK_OK,
427 resource->deleteResource(&deleteResponse, QualityOfService::HighQos));
429 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
431 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
432 EXPECT_TRUE(resource != NULL);
433 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse, QualityOfService::NaQos));
436 //GetResourceInterfaces Test
437 TEST(GetResourceInterfacesTest, GetResourceInterfaces)
439 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
440 EXPECT_TRUE(resource != NULL);
441 EXPECT_TRUE(resource->getResourceInterfaces().front() == DEFAULT_INTERFACE);
444 //GetResourceTypes Test
445 TEST(GetResourceTypesTest, GetResourceTypes)
447 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
448 EXPECT_TRUE(resource != NULL);
449 EXPECT_TRUE(resource->getResourceTypes().front() == "intel.rpost");
455 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
456 EXPECT_TRUE(resource != NULL);
457 EXPECT_TRUE(resource->host() == "coap://192.168.1.2:5000");
463 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
464 EXPECT_TRUE(resource != NULL);
465 EXPECT_TRUE(resource->uri() == "/resource");
468 //ConnectivityType Test
469 TEST(ConnectivityTypeTest, ConnectivityType)
471 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
472 EXPECT_TRUE(resource != NULL);
473 EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
477 TEST(IsObservableTest, isObservable)
479 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
480 EXPECT_TRUE(resource != NULL);
481 EXPECT_FALSE(resource->isObservable());
487 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
488 EXPECT_TRUE(resource != NULL);
489 EXPECT_TRUE(resource->sid() == "");
492 //UniqueIdentifier Test
493 TEST(UniqueIdentifierTest, uniqueIdentifier)
495 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
496 EXPECT_TRUE(resource != NULL);
497 std::ostringstream ss;
498 ss << resource->uniqueIdentifier();
499 EXPECT_TRUE(ss.str() == "/resource");
502 // HeaderOptions Test
503 TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
505 const uint16_t API_VERSION = 2048;
506 const uint16_t TOKEN = 3000;
507 HeaderOptions headerOptions;
508 HeaderOption::OCHeaderOption apiVersion(API_VERSION, "v.1.0");
509 HeaderOption::OCHeaderOption clientToken(TOKEN, "21ae43gf");
510 headerOptions.push_back(apiVersion);
511 headerOptions.push_back(clientToken);
513 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
514 EXPECT_TRUE(resource != NULL);
515 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
516 EXPECT_NO_THROW(resource->unsetHeaderOptions());
519 TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
521 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
522 EXPECT_TRUE(resource != NULL);
523 HeaderOptions headerOptions;
524 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
525 EXPECT_NO_THROW(resource->unsetHeaderOptions());