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, ConstructResourceObjectWithoutCoapScheme)
76 EXPECT_ANY_THROW(ConstructResourceObject("//192.168.1.2:5000", "/resource"));
79 TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
81 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
84 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
86 EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
89 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
91 EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
94 TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
96 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
99 TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri2)
101 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "resource"));
104 TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
106 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
107 EXPECT_TRUE(resource != NULL);
108 EXPECT_EQ(OC_STACK_OK, resource->get(OC::QueryParamsMap(), &onGetPut));
112 TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
114 OCResource::Ptr resource = ConstructResourceObject("", "coap://192.168.1.2:5000");
115 EXPECT_TRUE(resource != NULL);
116 EXPECT_THROW(resource->get(OC::QueryParamsMap(), &onGetPut), OC::OCException);
119 TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
121 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
122 EXPECT_TRUE(resource != NULL);
123 EXPECT_EQ(OC_STACK_OK,
124 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::HighQos));
127 TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
129 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
130 EXPECT_TRUE(resource != NULL);
131 EXPECT_EQ(OC_STACK_OK,
132 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::LowQos));
135 TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
137 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
138 EXPECT_TRUE(resource != NULL);
139 EXPECT_EQ(OC_STACK_OK,
140 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::MidQos));
143 TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
145 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
146 EXPECT_TRUE(resource != NULL);
147 EXPECT_EQ(OC_STACK_OK,
148 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
151 TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
153 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
154 EXPECT_TRUE(resource != NULL);
155 EXPECT_EQ(OC_STACK_OK,
156 resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
157 QualityOfService::NaQos));
160 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
162 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
163 EXPECT_TRUE(resource != NULL);
165 resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
166 QualityOfService::NaQos));
170 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
172 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
173 EXPECT_TRUE(resource != NULL);
175 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
178 TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
180 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
181 EXPECT_TRUE(resource != NULL);
182 EXPECT_EQ(OC_STACK_OK, resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut));
186 TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
188 OCRepresentation rep;
189 QueryParamsMap query = {};
190 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
191 EXPECT_TRUE(resource != NULL);
192 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut));
195 TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
197 OCRepresentation rep;
198 QueryParamsMap query = {};
199 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
200 EXPECT_TRUE(resource != NULL);
201 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::NaQos));
204 TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
206 OCRepresentation rep;
207 QueryParamsMap query = {};
208 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
209 EXPECT_TRUE(resource != NULL);
210 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::MidQos));
213 TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
215 OCRepresentation rep;
216 QueryParamsMap query = {};
217 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
218 EXPECT_TRUE(resource != NULL);
219 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::LowQos));
222 TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
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->post(rep, query, &onGetPut, QualityOfService::HighQos));
232 TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
234 OCRepresentation rep;
235 QueryParamsMap query = {};
236 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
237 EXPECT_TRUE(resource != NULL);
238 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut));
241 TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
243 OCRepresentation rep;
244 QueryParamsMap query = {};
245 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
246 EXPECT_TRUE(resource != NULL);
247 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::NaQos));
250 TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
252 OCRepresentation rep;
253 QueryParamsMap query = {};
254 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
255 EXPECT_TRUE(resource != NULL);
256 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::LowQos));
259 TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
261 OCRepresentation rep;
262 QueryParamsMap query = {};
263 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
264 EXPECT_TRUE(resource != NULL);
265 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::MidQos));
268 TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
270 OCRepresentation rep;
271 QueryParamsMap query = {};
272 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
273 EXPECT_TRUE(resource != NULL);
274 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::HighQos));
277 TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
279 OCRepresentation rep;
280 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
281 EXPECT_TRUE(resource != NULL);
282 EXPECT_EQ(OC_STACK_OK,
283 resource->put("", DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
286 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
288 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
289 EXPECT_TRUE(resource != NULL);
290 OCRepresentation rep;
292 resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
293 HeaderOptions headerOptions;
294 onGetPut(headerOptions, rep, OC_STACK_OK);
297 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
299 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
300 EXPECT_TRUE(resource != NULL);
301 OCRepresentation rep;
302 EXPECT_ANY_THROW(resource->put("", nullptr, rep, QueryParamsMap(), &onGetPut));
306 TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
308 OCResource::Ptr resource =
309 ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
310 EXPECT_TRUE(resource != NULL);
311 QueryParamsMap query = {};
312 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
315 TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
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::LowQos));
325 TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
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::NaQos));
335 TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
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::MidQos));
345 TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
347 QueryParamsMap query = {};
348 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
349 EXPECT_TRUE(resource != NULL);
350 EXPECT_EQ(OC_STACK_OK,
351 resource->observe(ObserveType::ObserveAll, query, &onObserve,
352 QualityOfService::HighQos));
355 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
357 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
358 EXPECT_TRUE(resource != NULL);
359 QueryParamsMap query = {};
360 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
361 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve());
364 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
366 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
367 EXPECT_TRUE(resource != NULL);
368 QueryParamsMap query = {};
369 EXPECT_EQ(OC_STACK_OK,
370 resource->observe(ObserveType::ObserveAll, query, &onObserve,
371 QualityOfService::NaQos));
372 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
375 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
377 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
378 EXPECT_TRUE(resource != NULL);
379 QueryParamsMap query = {};
380 EXPECT_EQ(OC_STACK_OK,
381 resource->observe(ObserveType::ObserveAll, query, &onObserve,
382 QualityOfService::LowQos));
383 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
386 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
388 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
389 EXPECT_TRUE(resource != NULL);
390 QueryParamsMap query = {};
391 EXPECT_EQ(OC_STACK_OK,
392 resource->observe(ObserveType::ObserveAll, query, &onObserve,
393 QualityOfService::MidQos));
394 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::MidQos));
397 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
399 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
400 EXPECT_TRUE(resource != NULL);
401 QueryParamsMap query = {};
402 EXPECT_EQ(OC_STACK_OK,
403 resource->observe(ObserveType::ObserveAll, query, &onObserve,
404 QualityOfService::HighQos));
405 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::HighQos));
409 TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
411 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
412 EXPECT_TRUE(resource != NULL);
413 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse));
416 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
418 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
419 EXPECT_TRUE(resource != NULL);
420 EXPECT_EQ(OC_STACK_OK,
421 resource->deleteResource(&deleteResponse, QualityOfService::LowQos));
424 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
426 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
427 EXPECT_TRUE(resource != NULL);
428 EXPECT_EQ(OC_STACK_OK,
429 resource->deleteResource(&deleteResponse, QualityOfService::MidQos));
432 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
434 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
435 EXPECT_TRUE(resource != NULL);
436 EXPECT_EQ(OC_STACK_OK,
437 resource->deleteResource(&deleteResponse, QualityOfService::HighQos));
439 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
441 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
442 EXPECT_TRUE(resource != NULL);
443 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse, QualityOfService::NaQos));
446 //GetResourceInterfaces Test
447 TEST(GetResourceInterfacesTest, GetResourceInterfaces)
449 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
450 EXPECT_TRUE(resource != NULL);
451 EXPECT_TRUE(resource->getResourceInterfaces().front() == DEFAULT_INTERFACE);
454 //GetResourceTypes Test
455 TEST(GetResourceTypesTest, GetResourceTypes)
457 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
458 EXPECT_TRUE(resource != NULL);
459 EXPECT_TRUE(resource->getResourceTypes().front() == "intel.rpost");
465 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
466 EXPECT_TRUE(resource != NULL);
467 EXPECT_TRUE(resource->host() == "coap://192.168.1.2:5000");
473 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
474 EXPECT_TRUE(resource != NULL);
475 EXPECT_TRUE(resource->uri() == "/resource");
478 //ConnectivityType Test
479 TEST(ConnectivityTypeTest, ConnectivityType)
481 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
482 EXPECT_TRUE(resource != NULL);
483 EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
487 TEST(IsObservableTest, isObservable)
489 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
490 EXPECT_TRUE(resource != NULL);
491 EXPECT_FALSE(resource->isObservable());
497 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
498 EXPECT_TRUE(resource != NULL);
499 EXPECT_TRUE(resource->sid() == "");
502 //UniqueIdentifier Test
503 TEST(UniqueIdentifierTest, uniqueIdentifier)
505 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
506 EXPECT_TRUE(resource != NULL);
507 std::ostringstream ss;
508 ss << resource->uniqueIdentifier();
509 EXPECT_TRUE(ss.str() == "/resource");
512 // HeaderOptions Test
513 TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
515 const uint16_t API_VERSION = 2048;
516 const uint16_t TOKEN = 3000;
517 HeaderOptions headerOptions;
518 HeaderOption::OCHeaderOption apiVersion(API_VERSION, "v.1.0");
519 HeaderOption::OCHeaderOption clientToken(TOKEN, "21ae43gf");
520 headerOptions.push_back(apiVersion);
521 headerOptions.push_back(clientToken);
523 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
524 EXPECT_TRUE(resource != NULL);
525 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
526 EXPECT_NO_THROW(resource->unsetHeaderOptions());
529 TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
531 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
532 EXPECT_TRUE(resource != NULL);
533 HeaderOptions headerOptions;
534 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
535 EXPECT_NO_THROW(resource->unsetHeaderOptions());