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 static char gLongHostAddress[] = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:5000";
30 namespace OCResourceTest
34 void onObserve(const HeaderOptions, const OCRepresentation&, const int&, const int&)
38 void onGetPut(const HeaderOptions&, const OCRepresentation& , const int eCode)
40 EXPECT_EQ(eCode, OC_STACK_OK);
43 void foundResource(std::shared_ptr<OCResource> )
47 void deleteResponse(const HeaderOptions&, const int)
52 OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
54 OCConnectivityType connectivityType = CT_DEFAULT;
55 std::vector<std::string> types = {"intel.rpost"};
56 std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
58 auto ret = OCPlatform::constructResourceObject(host, uri,
59 connectivityType, false, types, ifaces);
63 ADD_FAILURE() << "ConstructResourceObject result was null";
64 throw std::runtime_error("ConstructResourceObject result was null");
71 TEST(ConstructResourceTest, ConstructResourceObject)
73 EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
76 TEST(ConstructResourceTest, ConstructResourceObjectWithoutCoapScheme)
78 EXPECT_ANY_THROW(ConstructResourceObject("//192.168.1.2:5000", "/resource"));
81 TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
83 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
86 TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber2)
88 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:", "/resource"));
91 TEST(ConstructResourceTest, ConstructResourceObjectWithLongHostAddress)
93 EXPECT_ANY_THROW(ConstructResourceObject(gLongHostAddress, "/resource"));
96 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
98 EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
101 TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
103 EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
106 TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
108 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
111 TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri2)
113 EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "resource"));
116 TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
118 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
119 EXPECT_TRUE(resource != NULL);
120 EXPECT_EQ(OC_STACK_OK, resource->get(OC::QueryParamsMap(), &onGetPut));
124 TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
126 OCResource::Ptr resource = ConstructResourceObject("", "coap://192.168.1.2:5000");
127 EXPECT_TRUE(resource != NULL);
128 EXPECT_THROW(resource->get(OC::QueryParamsMap(), &onGetPut), OC::OCException);
131 TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
133 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
134 EXPECT_TRUE(resource != NULL);
135 EXPECT_EQ(OC_STACK_OK,
136 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::HighQos));
139 TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
141 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
142 EXPECT_TRUE(resource != NULL);
143 EXPECT_EQ(OC_STACK_OK,
144 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::LowQos));
147 TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
149 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
150 EXPECT_TRUE(resource != NULL);
151 EXPECT_EQ(OC_STACK_OK,
152 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::MidQos));
155 TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
157 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
158 EXPECT_TRUE(resource != NULL);
159 EXPECT_EQ(OC_STACK_OK,
160 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
163 TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
165 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
166 EXPECT_TRUE(resource != NULL);
167 EXPECT_EQ(OC_STACK_OK,
168 resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
169 QualityOfService::NaQos));
172 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
174 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
175 EXPECT_TRUE(resource != NULL);
177 resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
178 QualityOfService::NaQos));
182 TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
184 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
185 EXPECT_TRUE(resource != NULL);
187 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
190 TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
192 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
193 EXPECT_TRUE(resource != NULL);
194 EXPECT_EQ(OC_STACK_OK, resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut));
198 TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
200 OCRepresentation rep;
201 QueryParamsMap query = {};
202 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
203 EXPECT_TRUE(resource != NULL);
204 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut));
207 TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
209 OCRepresentation rep;
210 QueryParamsMap query = {};
211 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
212 EXPECT_TRUE(resource != NULL);
213 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::NaQos));
216 TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
218 OCRepresentation rep;
219 QueryParamsMap query = {};
220 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
221 EXPECT_TRUE(resource != NULL);
222 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::MidQos));
225 TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
227 OCRepresentation rep;
228 QueryParamsMap query = {};
229 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
230 EXPECT_TRUE(resource != NULL);
231 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::LowQos));
234 TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
236 OCRepresentation rep;
237 QueryParamsMap query = {};
238 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
239 EXPECT_TRUE(resource != NULL);
240 EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::HighQos));
244 TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
246 OCRepresentation rep;
247 QueryParamsMap query = {};
248 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
249 EXPECT_TRUE(resource != NULL);
250 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut));
253 TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
255 OCRepresentation rep;
256 QueryParamsMap query = {};
257 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
258 EXPECT_TRUE(resource != NULL);
259 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::NaQos));
262 TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
264 OCRepresentation rep;
265 QueryParamsMap query = {};
266 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
267 EXPECT_TRUE(resource != NULL);
268 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::LowQos));
271 TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
273 OCRepresentation rep;
274 QueryParamsMap query = {};
275 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
276 EXPECT_TRUE(resource != NULL);
277 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::MidQos));
280 TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
282 OCRepresentation rep;
283 QueryParamsMap query = {};
284 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
285 EXPECT_TRUE(resource != NULL);
286 EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::HighQos));
289 TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
291 OCRepresentation rep;
292 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
293 EXPECT_TRUE(resource != NULL);
294 EXPECT_EQ(OC_STACK_OK,
295 resource->put("", DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
298 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
300 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
301 EXPECT_TRUE(resource != NULL);
302 OCRepresentation rep;
304 resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
305 HeaderOptions headerOptions;
306 onGetPut(headerOptions, rep, OC_STACK_OK);
309 TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
311 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
312 EXPECT_TRUE(resource != NULL);
313 OCRepresentation rep;
314 EXPECT_ANY_THROW(resource->put("", nullptr, rep, QueryParamsMap(), &onGetPut));
318 TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
320 OCResource::Ptr resource =
321 ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
322 EXPECT_TRUE(resource != NULL);
323 QueryParamsMap query = {};
324 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
327 TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
329 QueryParamsMap query = {};
330 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
331 EXPECT_TRUE(resource != NULL);
332 EXPECT_EQ(OC_STACK_OK,
333 resource->observe(ObserveType::ObserveAll, query, &onObserve,
334 QualityOfService::LowQos));
337 TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
339 QueryParamsMap query = {};
340 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
341 EXPECT_TRUE(resource != NULL);
342 EXPECT_EQ(OC_STACK_OK,
343 resource->observe(ObserveType::ObserveAll, query, &onObserve,
344 QualityOfService::NaQos));
347 TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
349 QueryParamsMap query = {};
350 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
351 EXPECT_TRUE(resource != NULL);
352 EXPECT_EQ(OC_STACK_OK,
353 resource->observe(ObserveType::ObserveAll, query, &onObserve,
354 QualityOfService::MidQos));
357 TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
359 QueryParamsMap query = {};
360 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
361 EXPECT_TRUE(resource != NULL);
362 EXPECT_EQ(OC_STACK_OK,
363 resource->observe(ObserveType::ObserveAll, query, &onObserve,
364 QualityOfService::HighQos));
367 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
369 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
370 EXPECT_TRUE(resource != NULL);
371 QueryParamsMap query = {};
372 EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
373 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve());
376 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
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::NaQos));
384 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
387 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
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::LowQos));
395 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
398 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
400 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
401 EXPECT_TRUE(resource != NULL);
402 QueryParamsMap query = {};
403 EXPECT_EQ(OC_STACK_OK,
404 resource->observe(ObserveType::ObserveAll, query, &onObserve,
405 QualityOfService::MidQos));
406 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::MidQos));
409 TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
411 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
412 EXPECT_TRUE(resource != NULL);
413 QueryParamsMap query = {};
414 EXPECT_EQ(OC_STACK_OK,
415 resource->observe(ObserveType::ObserveAll, query, &onObserve,
416 QualityOfService::HighQos));
417 EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::HighQos));
421 TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
423 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
424 EXPECT_TRUE(resource != NULL);
425 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse));
428 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
430 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
431 EXPECT_TRUE(resource != NULL);
432 EXPECT_EQ(OC_STACK_OK,
433 resource->deleteResource(&deleteResponse, QualityOfService::LowQos));
436 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
438 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
439 EXPECT_TRUE(resource != NULL);
440 EXPECT_EQ(OC_STACK_OK,
441 resource->deleteResource(&deleteResponse, QualityOfService::MidQos));
444 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
446 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
447 EXPECT_TRUE(resource != NULL);
448 EXPECT_EQ(OC_STACK_OK,
449 resource->deleteResource(&deleteResponse, QualityOfService::HighQos));
451 TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
453 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
454 EXPECT_TRUE(resource != NULL);
455 EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse, QualityOfService::NaQos));
458 //GetResourceInterfaces Test
459 TEST(GetResourceInterfacesTest, GetResourceInterfaces)
461 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
462 EXPECT_TRUE(resource != NULL);
463 EXPECT_TRUE(resource->getResourceInterfaces().front() == DEFAULT_INTERFACE);
466 //GetResourceTypes Test
467 TEST(GetResourceTypesTest, GetResourceTypes)
469 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
470 EXPECT_TRUE(resource != NULL);
471 EXPECT_TRUE(resource->getResourceTypes().front() == "intel.rpost");
477 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
478 EXPECT_TRUE(resource != NULL);
479 EXPECT_TRUE(resource->host() == "coap://192.168.1.2:5000");
485 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
486 EXPECT_TRUE(resource != NULL);
487 EXPECT_TRUE(resource->uri() == "/resource");
490 //ConnectivityType Test
491 TEST(ConnectivityTypeTest, ConnectivityType)
493 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
494 EXPECT_TRUE(resource != NULL);
495 EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
499 TEST(IsObservableTest, isObservable)
501 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
502 EXPECT_TRUE(resource != NULL);
503 EXPECT_FALSE(resource->isObservable());
509 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
510 EXPECT_TRUE(resource != NULL);
511 EXPECT_TRUE(resource->sid() == "");
514 //UniqueIdentifier Test
515 TEST(UniqueIdentifierTest, uniqueIdentifier)
517 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
518 EXPECT_TRUE(resource != NULL);
519 std::ostringstream ss;
520 ss << resource->uniqueIdentifier();
521 EXPECT_TRUE(ss.str() == "/resource");
524 // HeaderOptions Test
525 TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
527 const uint16_t API_VERSION = 2048;
528 const uint16_t TOKEN = 3000;
529 HeaderOptions headerOptions;
530 HeaderOption::OCHeaderOption apiVersion(API_VERSION, "v.1.0");
531 HeaderOption::OCHeaderOption clientToken(TOKEN, "21ae43gf");
532 headerOptions.push_back(apiVersion);
533 headerOptions.push_back(clientToken);
535 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
536 EXPECT_TRUE(resource != NULL);
537 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
538 EXPECT_NO_THROW(resource->unsetHeaderOptions());
541 TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
543 OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
544 EXPECT_TRUE(resource != NULL);
545 HeaderOptions headerOptions;
546 EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
547 EXPECT_NO_THROW(resource->unsetHeaderOptions());