Merge branch 'master' into simulator
[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 static char gLongHostAddress[] = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:5000";
29
30 namespace OCResourceTest
31 {
32     using namespace OC;
33     // Callbacks
34     void onObserve(const HeaderOptions, const OCRepresentation&, const int&, const int&)
35     {
36     }
37
38     void onGetPut(const HeaderOptions&, const OCRepresentation& , const int eCode)
39     {
40         EXPECT_EQ(eCode, OC_STACK_OK);
41     }
42
43     void foundResource(std::shared_ptr<OCResource> )
44     {
45     }
46
47     void deleteResponse(const HeaderOptions&, const int)
48     {
49     }
50
51     //Helper method
52     OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
53     {
54         OCConnectivityType connectivityType = CT_DEFAULT;
55         std::vector<std::string> types = {"intel.rpost"};
56         std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
57
58         auto ret = OCPlatform::constructResourceObject(host, uri,
59                 connectivityType, false, types, ifaces);
60
61         if(!ret)
62         {
63             ADD_FAILURE() << "ConstructResourceObject result was null";
64             throw std::runtime_error("ConstructResourceObject result was null");
65         }
66
67         return ret;
68     }
69
70      //Get Test
71     TEST(ConstructResourceTest, ConstructResourceObject)
72     {
73         EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
74     }
75
76     TEST(ConstructResourceTest, ConstructResourceObjectWithoutCoapScheme)
77     {
78         EXPECT_ANY_THROW(ConstructResourceObject("//192.168.1.2:5000", "/resource"));
79     }
80
81     TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
82     {
83         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
84     }
85
86     TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber2)
87     {
88         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:", "/resource"));
89     }
90
91     TEST(ConstructResourceTest, ConstructResourceObjectWithLongHostAddress)
92     {
93         EXPECT_ANY_THROW(ConstructResourceObject(gLongHostAddress, "/resource"));
94     }
95
96     TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
97     {
98         EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
99     }
100
101     TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
102     {
103         EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
104     }
105
106     TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
107     {
108         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
109     }
110
111     TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri2)
112     {
113         EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "resource"));
114     }
115
116     TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
117     {
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));
121
122     }
123
124     TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
125     {
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);
129     }
130
131     TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
132     {
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));
137     }
138
139     TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
140     {
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));
145     }
146
147     TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
148     {
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));
153     }
154
155     TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
156     {
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));
161     }
162
163     TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
164     {
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));
170     }
171
172     TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
173     {
174         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
175         EXPECT_TRUE(resource != NULL);
176         EXPECT_ANY_THROW(
177                 resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
178                         QualityOfService::NaQos));
179     }
180
181
182     TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
183     {
184         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
185         EXPECT_TRUE(resource != NULL);
186         EXPECT_ANY_THROW(
187                 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
188     }
189
190     TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
191     {
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));
195     }
196
197     //Post Test
198     TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
199     {
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));
205     }
206
207     TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
208     {
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));
214     }
215
216     TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
217     {
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));
223     }
224
225     TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
226     {
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));
232     }
233
234     TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
235     {
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));
241     }
242
243     //Put Test
244     TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
245     {
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));
251     }
252
253     TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
254     {
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));
260     }
261
262     TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
263     {
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));
269     }
270
271     TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
272     {
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));
278     }
279
280     TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
281     {
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));
287     }
288
289     TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
290     {
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));
296     }
297
298     TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
299     {
300         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
301         EXPECT_TRUE(resource != NULL);
302         OCRepresentation rep;
303         EXPECT_ANY_THROW(
304                 resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
305         HeaderOptions headerOptions;
306         onGetPut(headerOptions, rep, OC_STACK_OK);
307     }
308
309     TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
310     {
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));
315     }
316
317     // Observer Test
318     TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
319     {
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));
325     }
326
327     TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
328     {
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));
335     }
336
337     TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
338     {
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));
345     }
346
347     TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
348     {
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));
355     }
356
357     TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
358     {
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));
365     }
366
367     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
368     {
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());
374     }
375
376     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
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::NaQos));
384         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
385     }
386
387     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
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::LowQos));
395         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
396     }
397
398     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
399     {
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));
407     }
408
409     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
410     {
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));
418     }
419
420     //DeleteResource
421     TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
422     {
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));
426     }
427
428     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
429     {
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));
434     }
435
436     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
437     {
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));
442     }
443
444     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
445     {
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));
450     }
451     TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
452     {
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));
456     }
457
458     //GetResourceInterfaces Test
459     TEST(GetResourceInterfacesTest, GetResourceInterfaces)
460     {
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);
464     }
465
466     //GetResourceTypes Test
467     TEST(GetResourceTypesTest, GetResourceTypes)
468     {
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");
472     }
473
474     // Host Test
475     TEST(HostTest, Host)
476     {
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");
480     }
481
482     //Uri Test
483     TEST(UriTest, Uri)
484     {
485         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
486         EXPECT_TRUE(resource != NULL);
487         EXPECT_TRUE(resource->uri() == "/resource");
488     }
489
490     //ConnectivityType Test
491     TEST(ConnectivityTypeTest, ConnectivityType)
492     {
493         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
494         EXPECT_TRUE(resource != NULL);
495         EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
496     }
497
498     //IsObservable Test
499     TEST(IsObservableTest, isObservable)
500     {
501         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
502         EXPECT_TRUE(resource != NULL);
503         EXPECT_FALSE(resource->isObservable());
504     }
505
506     //SID Test
507     TEST(SidTest, sid)
508     {
509         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
510         EXPECT_TRUE(resource != NULL);
511         EXPECT_TRUE(resource->sid() == "");
512     }
513
514     //UniqueIdentifier Test
515     TEST(UniqueIdentifierTest, uniqueIdentifier)
516     {
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");
522     }
523
524     // HeaderOptions Test
525     TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
526     {
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);
534
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());
539     }
540
541     TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
542     {
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());
548     }
549 }
550