Add unittests for ConstructResourceTest for invalid uri value
[platform/upstream/iotivity.git] / resource / unittests / OCResourceTest.cpp
1 //******************************************************************
2 //
3 // Copyright 2014 Intel Mobile Communications GmbH All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
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
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
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.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21
22 #include <OCPlatform.h>
23 #include <OCApi.h>
24 #include <gtest/gtest.h>
25 #include <string>
26 #include <map>
27
28 namespace OCResourceTest
29 {
30     using namespace OC;
31     // Callbacks
32     void onObserve(const HeaderOptions, const OCRepresentation&, const int&, const int&)
33     {
34     }
35
36     void onGetPut(const HeaderOptions&, const OCRepresentation& , const int eCode)
37     {
38         EXPECT_EQ(eCode, OC_STACK_OK);
39     }
40
41     void foundResource(std::shared_ptr<OCResource> )
42     {
43     }
44
45     void deleteResponse(const HeaderOptions&, const int)
46     {
47     }
48
49     //Helper method
50     OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
51     {
52         OCConnectivityType connectivityType = CT_DEFAULT;
53         std::vector<std::string> types = {"intel.rpost"};
54         std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
55
56         auto ret = OCPlatform::constructResourceObject(host, uri,
57                 connectivityType, false, types, ifaces);
58
59         if(!ret)
60         {
61             ADD_FAILURE() << "ConstructResourceObject result was null";
62             throw std::runtime_error("ConstructResourceObject result was null");
63         }
64
65         return ret;
66     }
67
68      //Get Test
69     TEST(ConstructResourceTest, ConstructResourceObject)
70     {
71         EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
72     }
73
74     TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
75     {
76         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
77     }
78
79     TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
80     {
81         EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
82     }
83
84     TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
85     {
86         EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
87     }
88
89     TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
90     {
91         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
92     }
93
94     TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
95     {
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));
99
100     }
101
102     TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
103     {
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);
107     }
108
109     TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
110     {
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));
115     }
116
117     TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
118     {
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));
123     }
124
125     TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
126     {
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));
131     }
132
133     TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
134     {
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));
139     }
140
141     TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
142     {
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));
148     }
149
150     TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
151     {
152         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
153         EXPECT_TRUE(resource != NULL);
154         EXPECT_ANY_THROW(
155                 resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
156                         QualityOfService::NaQos));
157     }
158
159
160     TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
161     {
162         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
163         EXPECT_TRUE(resource != NULL);
164         EXPECT_ANY_THROW(
165                 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
166     }
167
168     TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
169     {
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));
173     }
174
175     //Post Test
176     TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
177     {
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));
183     }
184
185     TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
186     {
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));
192     }
193
194     TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
195     {
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));
201     }
202
203     TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
204     {
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));
210     }
211
212     TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
213     {
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));
219     }
220
221     //Put Test
222     TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
223     {
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));
229     }
230
231     TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
232     {
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));
238     }
239
240     TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
241     {
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));
247     }
248
249     TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
250     {
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));
256     }
257
258     TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
259     {
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));
265     }
266
267     TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
268     {
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));
274     }
275
276     TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
277     {
278         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
279         EXPECT_TRUE(resource != NULL);
280         OCRepresentation rep;
281         EXPECT_ANY_THROW(
282                 resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
283         HeaderOptions headerOptions;
284         onGetPut(headerOptions, rep, OC_STACK_OK);
285     }
286
287     TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
288     {
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));
293     }
294
295     // Observer Test
296     TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
297     {
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));
303     }
304
305     TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
306     {
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));
313     }
314
315     TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
316     {
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));
323     }
324
325     TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
326     {
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));
333     }
334
335     TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
336     {
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));
343     }
344
345     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
346     {
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());
352     }
353
354     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
355     {
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));
363     }
364
365     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
366     {
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));
374     }
375
376     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
377     {
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));
385     }
386
387     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
388     {
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));
396     }
397
398     //DeleteResource
399     TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
400     {
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));
404     }
405
406     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
407     {
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));
412     }
413
414     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
415     {
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));
420     }
421
422     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
423     {
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));
428     }
429     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
430     {
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));
434     }
435
436     //GetResourceInterfaces Test
437     TEST(GetResourceInterfacesTest, GetResourceInterfaces)
438     {
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);
442     }
443
444     //GetResourceTypes Test
445     TEST(GetResourceTypesTest, GetResourceTypes)
446     {
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");
450     }
451
452     // Host Test
453     TEST(HostTest, Host)
454     {
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");
458     }
459
460     //Uri Test
461     TEST(UriTest, Uri)
462     {
463         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
464         EXPECT_TRUE(resource != NULL);
465         EXPECT_TRUE(resource->uri() == "/resource");
466     }
467
468     //ConnectivityType Test
469     TEST(ConnectivityTypeTest, ConnectivityType)
470     {
471         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
472         EXPECT_TRUE(resource != NULL);
473         EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
474     }
475
476     //IsObservable Test
477     TEST(IsObservableTest, isObservable)
478     {
479         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
480         EXPECT_TRUE(resource != NULL);
481         EXPECT_FALSE(resource->isObservable());
482     }
483
484     //SID Test
485     TEST(SidTest, sid)
486     {
487         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
488         EXPECT_TRUE(resource != NULL);
489         EXPECT_TRUE(resource->sid() == "");
490     }
491
492     //UniqueIdentifier Test
493     TEST(UniqueIdentifierTest, uniqueIdentifier)
494     {
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");
500     }
501
502     // HeaderOptions Test
503     TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
504     {
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);
512
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());
517     }
518
519     TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
520     {
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());
526     }
527 }
528