Merge "Enable GATT server indication for Tizen Speaker" into tizen
[platform/upstream/iotivity.git] / resource / unittests / OCResourceTest.cpp
index 4160314..fc4b40b 100644 (file)
 #include <OCPlatform.h>
 #include <OCApi.h>
 #include <gtest/gtest.h>
+#include <string>
+#include <map>
+
+static char gLongHostAddress[] = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:5000";
 
 namespace OCResourceTest
 {
     using namespace OC;
     // Callbacks
-
-    void onObserve(const HeaderOptions headerOptions, const OCRepresentation& rep,
-                        const int& eCode, const int& sequenceNumber)
+    void onObserve(const HeaderOptions, const OCRepresentation&, const int&, const int&)
     {
     }
 
-    void onGetPut(const HeaderOptions& headerOptions, const OCRepresentation& rep, const int eCode)
+    void onGetPut(const HeaderOptions&, const OCRepresentation& , const int eCode)
     {
+        EXPECT_EQ(eCode, OC_STACK_OK);
     }
 
-    void foundResource(std::shared_ptr<OCResource> resource)
+    void foundResource(std::shared_ptr<OCResource> )
     {
+    }
 
+    void deleteResponse(const HeaderOptions&, const int)
+    {
     }
 
     //Helper method
-    OCResource::Ptr ConstructResourceObject(std::string uri)
+    OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
     {
+        OCConnectivityType connectivityType = CT_DEFAULT;
         std::vector<std::string> types = {"intel.rpost"};
         std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
-        return OCPlatform::constructResourceObject(std::string(""), uri,
-                                false, types, ifaces);
+
+        auto ret = OCPlatform::constructResourceObject(host, uri,
+                connectivityType, false, types, ifaces);
+
+        if(!ret)
+        {
+            ADD_FAILURE() << "ConstructResourceObject result was null";
+            throw std::runtime_error("ConstructResourceObject result was null");
+        }
+
+        return ret;
+    }
+
+    //ConstructResourceObject Test
+    TEST(ConstructResourceTest, ConstructResourceObjectWithValidHost)
+    {
+        EXPECT_NO_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectWithValidHost2)
+    {
+        EXPECT_NO_THROW(ConstructResourceObject("coap://[ffff::ffff]:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectWithValidHost3)
+    {
+        EXPECT_NO_THROW(ConstructResourceObject("coap://[ffff::ffff%25eth0]:5000", "/resource"));
     }
 
-    //ConstructResourceTest
     TEST(ConstructResourceTest, ConstructResourceObject)
     {
-        EXPECT_ANY_THROW(ConstructResourceObject(std::string("")));
+        EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
     }
 
-    //ResourceGetTest
-    TEST(ResourceGetTest, ResourceGetForInvalidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutCoapScheme)
     {
-        OCResource::Ptr resource = ConstructResourceObject("192.168.1.2:5000");
-        if(resource)
-        {
-            QueryParamsMap test;
-            EXPECT_ANY_THROW(resource->get(test, &onGetPut));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject("//192.168.1.2:5000", "/resource"));
     }
 
-    TEST(ResourceGetTest, ResourceGetForValidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
     {
-        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000");
-        if(resource)
-        {
-            QueryParamsMap test;
-            EXPECT_EQ(OC_STACK_OK, resource->get(OC::QueryParamsMap(), &onGetPut));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
     }
 
-    //ResourcePutTest
-    TEST(ResourcePutTest, ResourcePutForInvalidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber2)
     {
-        OCResource::Ptr resource = ConstructResourceObject("192.168.1.2:5000");
-        if(resource)
-        {
-            OCRepresentation rep;
-            QueryParamsMap test;
-            EXPECT_ANY_THROW(resource->put(rep, test, &onGetPut));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:", "/resource"));
     }
 
-    TEST(ResourcePutTest, ResourcePutForValid)
+    TEST(ConstructResourceTest, ConstructResourceObjectWithLongHostAddress)
     {
-        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000");
-        if(resource)
-        {
-            QueryParamsMap test;
-            OCRepresentation rep;
-            EXPECT_EQ(OC_STACK_OK, resource->put(rep, test, &onGetPut));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject(gLongHostAddress, "/resource"));
     }
 
-    //ResourcePostTest
-    TEST(ResourcePostTest, ResourcePostForInvalidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
     {
-        OCResource::Ptr resource = ConstructResourceObject("192.168.1.2:5000");
-        if(resource)
-        {
-            OCRepresentation rep;
-            QueryParamsMap test;
-            EXPECT_ANY_THROW(resource->post(rep, test, &onGetPut));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
     }
 
-    TEST(ResourcePostTest, ResourcePostValidConfiguration)
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
     {
-        PlatformConfig cfg;
-        OCPlatform::Configure(cfg);
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
+    }
 
-        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000");
-        if(resource)
-        {
-            OCRepresentation rep;
-            QueryParamsMap test;
-            EXPECT_EQ(OC_STACK_OK, resource->post(rep, test, &onGetPut));
-        }
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost3)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://[ffff:::ffff]:5000", "/resource"));
     }
 
-    //ResourceObserveTest
-    TEST(ResourceObserveTest, ResourceObserveInValidUri)
-     {
-        OCResource::Ptr resource = ConstructResourceObject("192.168.1.2:5000");
-        if(resource)
-        {
-            QueryParamsMap test;
-            EXPECT_ANY_THROW(resource->observe(ObserveType::ObserveAll, test, &onObserve));
-        }
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost4)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://[ffff::ffff%eth0]:5000", "/resource"));
     }
 
-    TEST(ResourceObserveTest, ResourceObserveValidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
     {
-        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000");
-        if(resource)
-        {
-            QueryParamsMap test;
-            OCRepresentation rep;
-            EXPECT_EQ(OC_STACK_OK,resource->observe(ObserveType::ObserveAll, test, &onObserve));
-        }
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "/"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri2)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:5000", "resource"));
+    }
+
+    //Get Test
+    TEST(ResourceGetTest, DISABLED_ResourceGetForValidUri)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->get(OC::QueryParamsMap(), &onGetPut));
+
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetForBadUri)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("", "coap://192.168.1.2:5000");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_THROW(resource->get(OC::QueryParamsMap(), &onGetPut), OC::OCException);
     }
 
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::HighQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::LowQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::MidQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
+                        QualityOfService::NaQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_ANY_THROW(
+                resource->get(nullptr, DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut,
+                        QualityOfService::NaQos));
+    }
+
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_ANY_THROW(
+                resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
+    }
+
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->get("", DEFAULT_INTERFACE, QueryParamsMap(), &onGetPut));
+    }
+
+    //Post Test
+    TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut));
+    }
+
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::NaQos));
+    }
+
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::MidQos));
+    }
+
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::LowQos));
+    }
+
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::HighQos));
+    }
+
+    //Put Test
+    TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::NaQos));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::LowQos));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::MidQos));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
+    {
+        OCRepresentation rep;
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::HighQos));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
+    {
+        OCRepresentation rep;
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->put("", DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithNullType)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        OCRepresentation rep;
+        EXPECT_ANY_THROW(
+                resource->put(nullptr, DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
+        HeaderOptions headerOptions;
+        onGetPut(headerOptions, rep, OC_STACK_OK);
+    }
+
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        OCRepresentation rep;
+        EXPECT_ANY_THROW(resource->put("", nullptr, rep, QueryParamsMap(), &onGetPut));
+    }
+
+    // Observer Test
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
+    {
+        OCResource::Ptr resource =
+                ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
+        EXPECT_TRUE(resource != NULL);
+        QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
+    {
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::LowQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
+    {
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::NaQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
+    {
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::MidQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
+    {
+        QueryParamsMap query = {};
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::HighQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
+        EXPECT_EQ(OC_STACK_OK, resource->cancelObserve());
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::NaQos));
+        EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::LowQos));
+        EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+            QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::MidQos));
+        EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::MidQos));
+    }
+
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+            QueryParamsMap query = {};
+        EXPECT_EQ(OC_STACK_OK,
+                resource->observe(ObserveType::ObserveAll, query, &onObserve,
+                        QualityOfService::HighQos));
+        EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::HighQos));
+    }
+
+    //DeleteResource
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceValidUri)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse));
+    }
+
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->deleteResource(&deleteResponse, QualityOfService::LowQos));
+    }
+
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->deleteResource(&deleteResponse, QualityOfService::MidQos));
+    }
+
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithHighQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK,
+                resource->deleteResource(&deleteResponse, QualityOfService::HighQos));
+    }
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_EQ(OC_STACK_OK, resource->deleteResource(&deleteResponse, QualityOfService::NaQos));
+    }
+
+    //GetResourceInterfaces Test
+    TEST(GetResourceInterfacesTest, GetResourceInterfaces)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->getResourceInterfaces().front() == DEFAULT_INTERFACE);
+    }
+
+    //GetResourceTypes Test
+    TEST(GetResourceTypesTest, GetResourceTypes)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->getResourceTypes().front() == "intel.rpost");
+    }
+
+    // Host Test
+    TEST(HostTest, Host)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->host() == "coap://192.168.1.2:5000");
+    }
+
+    TEST(HostTest, Host2)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://[ffff::ffff%25eth0]:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->host() == "coap://[ffff::ffff%25eth0]:5000");
+    }
+
+    //Uri Test
+    TEST(UriTest, Uri)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->uri() == "/resource");
+    }
+
+    //ConnectivityType Test
+    TEST(ConnectivityTypeTest, ConnectivityType)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
+    }
+
+    //IsObservable Test
+    TEST(IsObservableTest, isObservable)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_FALSE(resource->isObservable());
+    }
+
+    //SID Test
+    TEST(SidTest, sid)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_TRUE(resource->sid() == "");
+    }
+
+    //UniqueIdentifier Test
+    TEST(UniqueIdentifierTest, uniqueIdentifier)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        std::ostringstream ss;
+        ss << resource->uniqueIdentifier();
+        EXPECT_TRUE(ss.str() == "/resource");
+    }
+
+    // HeaderOptions Test
+    TEST(HeaderOptionsTest, SetHeaderOptionsValidInput)
+    {
+        const uint16_t API_VERSION = 2048;
+        const uint16_t TOKEN = 3000;
+        HeaderOptions headerOptions;
+        HeaderOption::OCHeaderOption apiVersion(API_VERSION, "v.1.0");
+        HeaderOption::OCHeaderOption clientToken(TOKEN, "21ae43gf");
+        headerOptions.push_back(apiVersion);
+        headerOptions.push_back(clientToken);
+
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
+        EXPECT_NO_THROW(resource->unsetHeaderOptions());
+    }
+
+    TEST(HeaderOptionsTest, SetHeaderOptionsEmptyInput)
+    {
+        OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
+        EXPECT_TRUE(resource != NULL);
+        HeaderOptions headerOptions;
+        EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
+        EXPECT_NO_THROW(resource->unsetHeaderOptions());
+    }
 }
+