Merge "Enable GATT server indication for Tizen Speaker" into tizen
[platform/upstream/iotivity.git] / resource / unittests / OCResourceTest.cpp
index c025df0..fc4b40b 100644 (file)
@@ -25,6 +25,8 @@
 #include <string>
 #include <map>
 
+static char gLongHostAddress[] = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111:5000";
+
 namespace OCResourceTest
 {
     using namespace OC;
@@ -49,21 +51,95 @@ namespace OCResourceTest
     //Helper method
     OCResource::Ptr ConstructResourceObject(std::string host, std::string uri)
     {
-        OCConnectivityType connectivityType = OC_WIFI;
+        OCConnectivityType connectivityType = CT_DEFAULT;
         std::vector<std::string> types = {"intel.rpost"};
         std::vector<std::string> ifaces = {DEFAULT_INTERFACE};
 
-        return OCPlatform::constructResourceObject(host, uri,
+        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"));
     }
 
-     //Get Test
     TEST(ConstructResourceTest, ConstructResourceObject)
     {
         EXPECT_ANY_THROW(ConstructResourceObject(std::string(""), std::string("")));
     }
 
-    TEST(ResourceGetTest, ResourceGetForValidUri)
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutCoapScheme)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("//192.168.1.2:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectWithoutPortNumber2)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://192.168.1.2:", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectWithLongHostAddress)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject(gLongHostAddress, "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("192.168.1.2:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost2)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost3)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://[ffff:::ffff]:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidHost4)
+    {
+        EXPECT_ANY_THROW(ConstructResourceObject("coap://[ffff::ffff%eth0]:5000", "/resource"));
+    }
+
+    TEST(ConstructResourceTest, ConstructResourceObjectInvalidUri)
+    {
+        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);
@@ -71,14 +147,13 @@ namespace OCResourceTest
 
     }
 
-    TEST(ResourceGetTest, ResourceGetForBadUri)
+    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);
     }
 
-    // Enable it when the CON is supported in the stack
     TEST(ResourceGetTest, DISABLED_ResourceGetWithHighQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
@@ -87,7 +162,7 @@ namespace OCResourceTest
                 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::HighQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithLowQos)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithLowQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -95,7 +170,7 @@ namespace OCResourceTest
                 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::LowQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithMidQos)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithMidQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -103,7 +178,7 @@ namespace OCResourceTest
                 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::MidQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithNaQos)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNaQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -111,7 +186,7 @@ namespace OCResourceTest
                 resource->get(OC::QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithRTIFNaQos)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithRTIFNaQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -120,7 +195,7 @@ namespace OCResourceTest
                         QualityOfService::NaQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithNullResourceType)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceType)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -130,7 +205,7 @@ namespace OCResourceTest
     }
 
 
-    TEST(ResourceGetTest, ResourceGetWithNullResourceInterface)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithNullResourceInterface)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -138,7 +213,7 @@ namespace OCResourceTest
                 resource->get("", nullptr, QueryParamsMap(), &onGetPut, QualityOfService::NaQos));
     }
 
-    TEST(ResourceGetTest, ResourceGetWithTypeAndInterface)
+    TEST(ResourceGetTest, DISABLED_ResourceGetWithTypeAndInterface)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -146,7 +221,7 @@ namespace OCResourceTest
     }
 
     //Post Test
-    TEST(ResourcePostTest, ResourcePostValidConfiguration)
+    TEST(ResourcePostTest, DISABLED_ResourcePostValidConfiguration)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -155,7 +230,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut));
     }
 
-    TEST(ResourcePostTest, ResourcePostWithNaQos)
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithNaQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -164,7 +239,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::NaQos));
     }
 
-    TEST(ResourcePostTest, ResourcePostWithMidQos)
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithMidQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -173,7 +248,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::MidQos));
     }
 
-    TEST(ResourcePostTest, ResourcePostWithLowQos)
+    TEST(ResourcePostTest, DISABLED_ResourcePostWithLowQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -182,7 +257,6 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->post(rep, query, &onGetPut, QualityOfService::LowQos));
     }
 
-    // Enable it when the CON is supported in the stack
     TEST(ResourcePostTest, DISABLED_ResourcePostWithHighQos)
     {
         OCRepresentation rep;
@@ -193,7 +267,7 @@ namespace OCResourceTest
     }
 
     //Put Test
-    TEST(ResourcePutTest, ResourcePutForValid)
+    TEST(ResourcePutTest, DISABLED_ResourcePutForValid)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -202,7 +276,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut));
     }
 
-    TEST(ResourcePutTest, ResourcePutWithNaQos)
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithNaQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -211,7 +285,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::NaQos));
     }
 
-    TEST(ResourcePutTest, ResourcePutWithLowQos)
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithLowQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -220,7 +294,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::LowQos));
     }
 
-    TEST(ResourcePutTest, ResourcePutWithMidQos)
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithMidQos)
     {
         OCRepresentation rep;
         QueryParamsMap query = {};
@@ -229,7 +303,6 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::MidQos));
     }
 
-    // Enable it when the CON is supported in the stack
     TEST(ResourcePutTest, DISABLED_ResourcePutWithHighQos)
     {
         OCRepresentation rep;
@@ -239,7 +312,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->put(rep, query, &onGetPut, QualityOfService::HighQos));
     }
 
-    TEST(ResourcePutTest, ResourcePutWithTypeAndInterface)
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithTypeAndInterface)
     {
         OCRepresentation rep;
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
@@ -248,18 +321,18 @@ namespace OCResourceTest
                 resource->put("", DEFAULT_INTERFACE, rep, QueryParamsMap(), &onGetPut));
     }
 
-    TEST(ResourcePutTest, ResourcePutWithNullType)
+    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 = {};
+        HeaderOptions headerOptions;
         onGetPut(headerOptions, rep, OC_STACK_OK);
     }
 
-    TEST(ResourcePutTest, ResourcePutWithNullInterface)
+    TEST(ResourcePutTest, DISABLED_ResourcePutWithNullInterface)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -268,7 +341,7 @@ namespace OCResourceTest
     }
 
     // Observer Test
-    TEST(ResourceObserveTest, ResourceObserveValidUri)
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveValidUri)
     {
         OCResource::Ptr resource =
                 ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
@@ -277,7 +350,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->observe(ObserveType::ObserveAll, query, &onObserve));
     }
 
-    TEST(ResourceObserveTest, ResourceObserveLoQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveLoQos)
     {
         QueryParamsMap query = {};
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
@@ -287,7 +360,7 @@ namespace OCResourceTest
                         QualityOfService::LowQos));
     }
 
-    TEST(ResourceObserveTest, ResourceObserveNaQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveNaQos)
     {
         QueryParamsMap query = {};
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
@@ -297,7 +370,7 @@ namespace OCResourceTest
                         QualityOfService::NaQos));
     }
 
-    TEST(ResourceObserveTest, ResourceObserveMidQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceObserveMidQos)
     {
         QueryParamsMap query = {};
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/Observe");
@@ -307,7 +380,6 @@ namespace OCResourceTest
                         QualityOfService::MidQos));
     }
 
-    //Enable it when CON is supported in the stack.
     TEST(ResourceObserveTest, DISABLED_ResourceObserveHighQos)
     {
         QueryParamsMap query = {};
@@ -318,7 +390,7 @@ namespace OCResourceTest
                         QualityOfService::HighQos));
     }
 
-    TEST(ResourceObserveTest, ResourceCancelObserveValidUri)
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveValidUri)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -327,7 +399,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve());
     }
 
-    TEST(ResourceObserveTest, ResourceCancelObserveWithNaQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithNaQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -338,7 +410,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::NaQos));
     }
 
-    TEST(ResourceObserveTest, ResourceCancelObserveWithLowQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithLowQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -349,7 +421,7 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::LowQos));
     }
 
-    TEST(ResourceObserveTest, ResourceCancelObserveWithMidQos)
+    TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithMidQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -360,7 +432,6 @@ namespace OCResourceTest
         EXPECT_EQ(OC_STACK_OK, resource->cancelObserve(QualityOfService::MidQos));
     }
 
-    // We enable it when the CON is supported in the stack.
     TEST(ResourceObserveTest, DISABLED_ResourceCancelObserveWithHighQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
@@ -373,14 +444,14 @@ namespace OCResourceTest
     }
 
     //DeleteResource
-    TEST(DeleteResourceTest, DeleteResourceValidUri)
+    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, DeleteResourceWithLowQos)
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithLowQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -388,7 +459,7 @@ namespace OCResourceTest
                 resource->deleteResource(&deleteResponse, QualityOfService::LowQos));
     }
 
-    TEST(DeleteResourceTest, DeleteResourceWithMidQos)
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithMidQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -396,14 +467,14 @@ namespace OCResourceTest
                 resource->deleteResource(&deleteResponse, QualityOfService::MidQos));
     }
 
-    TEST(DeleteResourceTest, DeleteResourceWithHighQos)
+    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, DeleteResourceWithNaQos)
+    TEST(DeleteResourceTest, DISABLED_DeleteResourceWithNaQos)
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
@@ -434,6 +505,13 @@ namespace OCResourceTest
         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)
     {
@@ -447,7 +525,7 @@ namespace OCResourceTest
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
-        EXPECT_TRUE(resource->connectivityType() == OC_WIFI);
+        EXPECT_TRUE(resource->connectivityType() == CT_DEFAULT);
     }
 
     //IsObservable Test
@@ -463,7 +541,7 @@ namespace OCResourceTest
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
-        EXPECT_TRUE(resource->sid() == "0");
+        EXPECT_TRUE(resource->sid() == "");
     }
 
     //UniqueIdentifier Test
@@ -473,7 +551,7 @@ namespace OCResourceTest
         EXPECT_TRUE(resource != NULL);
         std::ostringstream ss;
         ss << resource->uniqueIdentifier();
-        EXPECT_TRUE(ss.str() == "0/resource");
+        EXPECT_TRUE(ss.str() == "/resource");
     }
 
     // HeaderOptions Test
@@ -497,7 +575,7 @@ namespace OCResourceTest
     {
         OCResource::Ptr resource = ConstructResourceObject("coap://192.168.1.2:5000", "/resource");
         EXPECT_TRUE(resource != NULL);
-        HeaderOptions headerOptions = {};
+        HeaderOptions headerOptions;
         EXPECT_NO_THROW(resource->setHeaderOptions(headerOptions));
         EXPECT_NO_THROW(resource->unsetHeaderOptions());
     }