Added unit test cases for missed out APIs of mediator in easy-setup.
authorSenthil Kumar G S <senthil.gs@samsung.com>
Wed, 17 May 2017 14:55:33 +0000 (20:25 +0530)
committerUze Choi <uzchoi@samsung.com>
Fri, 19 May 2017 08:42:15 +0000 (08:42 +0000)
Unit test case for requestToConnect and provisionCloudProperties APIs.
This improves code coverage as well.

Change-Id: Ice5f616150269c9b375d47a7dd3eb23c0fec95a5
Signed-off-by: Senthil Kumar G S <senthil.gs@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/19991
Reviewed-by: Phil Coval <philippe.coval@osg.samsung.com>
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Jihun Ha <jihun.ha@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/easy-setup/mediator/richsdk/unittests/ESMediatorTest.cpp

index 8b50705..6d13642 100755 (executable)
@@ -52,6 +52,7 @@ namespace
     std::mutex mutexForCondition;
 
     ESEnrolleeSimulator g_enrolleeSimul;
+    std::shared_ptr<OC::OCResource> g_enrolleeResource;
     std::shared_ptr<RemoteEnrollee> g_remoteEnrollee;
 }
 
@@ -192,6 +193,7 @@ TEST_F(EasysetupMediatorTest, createremoteenrolleeFailedWithNotEasySetupResource
 TEST_F(EasysetupMediatorTest, createremoteenrolleeSucceedWithEasySetupResource)
 {
     discoverRemoteEnrollee();
+    g_enrolleeResource = m_enrolleeResource;
     g_remoteEnrollee = EasySetup::getInstance()->createRemoteEnrollee(m_enrolleeResource);
 
     ASSERT_NE(nullptr, g_remoteEnrollee);
@@ -374,6 +376,65 @@ TEST_F(ProvisionDevicePropertiesTest,
     EXPECT_EQ(cntForReceivedCallbackWithSuccess, 1);
 }
 
+class RequestToConnectTest : public EasysetupMediatorTest
+{
+
+public:
+    RequestToConnectTest() = default;
+    ~RequestToConnectTest() = default;
+
+    static void connectRequestStatusCb(shared_ptr< ConnectRequestStatus > /*status*/)
+    {
+    }
+
+protected:
+    void SetUp()
+    {
+        TestWithMock::SetUp();
+    }
+
+    void TearDown()
+    {
+        TestWithMock::TearDown();
+    }
+};
+
+TEST_F(RequestToConnectTest,
+          ThrowExceptionWhenRequestToConnectFailedByCallbackIsNull)
+{
+    std::vector<ES_CONNECT_TYPE> connectTypes;
+    connectTypes.push_back(ES_CONNECT_NONE);
+
+    EXPECT_ANY_THROW(g_remoteEnrollee->requestToConnect(connectTypes, nullptr));
+}
+
+TEST_F(RequestToConnectTest, RequestToConnectSucceed)
+{
+    std::vector<ES_CONNECT_TYPE> connectTypes;
+    connectTypes.push_back(ES_CONNECT_NONE);
+
+    int cntForReceivedCallbackWithSuccess = 0;
+
+    mocks.OnCallFunc(connectRequestStatusCb).Do(
+        [&cntForReceivedCallbackWithSuccess]
+        (std::shared_ptr< ConnectRequestStatus > status)
+        {
+            if(status->getESResult() == ES_OK)
+            {
+               cntForReceivedCallbackWithSuccess++;
+            }
+
+        });
+
+    g_remoteEnrollee->requestToConnect(connectTypes, connectRequestStatusCb);
+
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, g_waitForResponse);
+
+    EXPECT_EQ(cntForReceivedCallbackWithSuccess, 1);
+}
+
+
 class ProvisionCloudPropertiesTest : public EasysetupMediatorTest
 {
 
@@ -460,6 +521,32 @@ TEST_F(ProvisionCloudPropertiesTest, ProvisionCloudPropertiesSucceed)
     responseCon.wait_for(lock, g_waitForResponse);
 
     EXPECT_EQ(cntForReceivedCallbackWithSuccess, 1);
+}
+
+TEST_F(ProvisionCloudPropertiesTest, ProvisionCloudPropertiesWithResourceSucceed)
+{
+    CloudProp cloudProp;
+    cloudProp.setCloudProp("authCode", "authProvider", "ciServer");
+    cloudProp.setCloudID("f002ae8b-c42c-40d3-8b8d-1927c17bd1b3");
+
+    int cntForReceivedCallbackWithSuccess = 0;
+
+    mocks.OnCallFunc(cloudPropProvStatusCb).Do(
+        [& cntForReceivedCallbackWithSuccess](std::shared_ptr< CloudPropProvisioningStatus > status)
+        {
+            if(status->getESResult() == ES_OK)
+            {
+               cntForReceivedCallbackWithSuccess++;
+            }
+        });
+
+    g_remoteEnrollee->provisionCloudProperties(g_enrolleeResource, cloudProp, cloudPropProvStatusCb);
+
+    std::unique_lock< std::mutex > lock{ mutexForCondition };
+    responseCon.wait_for(lock, g_waitForResponse);
+
+    EXPECT_EQ(cntForReceivedCallbackWithSuccess, 1);
 
     ESTerminateEnrollee();
 }
+