Compose RequestHandler unit tests
authorcoderhyme <jhyo.kim@samsung.com>
Sat, 13 Jun 2015 08:30:34 +0000 (17:30 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 17 Jun 2015 08:57:43 +0000 (08:57 +0000)
Change-Id: Ibeda49a84f1d2801bbc37ca918287be22261061a
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1310
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/basis/serverBuilder/src/RequestHandler.cpp
service/basis/serverBuilder/unittests/RequestHandlerTest.cpp [new file with mode: 0644]

index 0a15805..6322fbf 100644 (file)
@@ -65,7 +65,6 @@ namespace OIC
 
         OC::OCRepresentation CustomAttrRequestHandler::getOCRepresentation(
                 PrimitiveServerResource& resource)
-
         {
             return ResourceAttributesConverter::toOCRepresentation(m_attrs);
         }
diff --git a/service/basis/serverBuilder/unittests/RequestHandlerTest.cpp b/service/basis/serverBuilder/unittests/RequestHandlerTest.cpp
new file mode 100644 (file)
index 0000000..fb01ded
--- /dev/null
@@ -0,0 +1,127 @@
+//******************************************************************
+//
+// Copyright 2015 Samsung Electronics All Rights Reserved.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+#include <gtest/gtest.h>
+#include <HippoMocks/hippomocks.h>
+
+#include <internal/RequestHandler.h>
+
+#include <OCPlatform.h>
+
+using namespace std;
+
+using namespace testing;
+using namespace OIC::Service;
+
+constexpr char EXISTING[]{ "ext" };
+constexpr int ORIGIN_VALUE{ 100 };
+
+class SimpleRequestHandlerTest: public Test
+{
+public:
+    PrimitiveServerResource::Ptr server;
+
+    ResourceAttributes requestAttrs;
+
+protected:
+    void SetUp() override
+    {
+        server = PrimitiveServerResource::Builder("a/test", "", "").create();
+
+        server->setAttribute(EXISTING, ORIGIN_VALUE);
+    }
+};
+
+TEST_F(SimpleRequestHandlerTest, ResponseHasSameValuesPassedToHandlerConstructor)
+{
+    SimpleRequestHandler handler{ OC_EH_ERROR, -1000 };
+
+    auto response = handler.buildResponse(*server, requestAttrs);
+
+    ASSERT_EQ(OC_EH_ERROR, response->getResponseResult());
+    ASSERT_EQ(-1000, response->getErrorCode());
+}
+
+TEST_F(SimpleRequestHandlerTest, ResponseHasSameAttrsWithServerAttrs)
+{
+    SimpleRequestHandler handler{};
+
+    auto response = handler.buildResponse(*server, requestAttrs);
+
+    ASSERT_EQ(ORIGIN_VALUE, response->getResourceRepresentation()[EXISTING].getValue<int>());
+}
+
+
+
+class SetRequestProxyHandlerTest: public Test
+{
+public:
+    PrimitiveServerResource::Ptr server;
+    ResourceAttributes requestAttrs;
+    RequestHandler::Ptr setRequestProxyHandler;
+
+protected:
+    void SetUp() override
+    {
+        setRequestProxyHandler = make_shared<SetRequestProxyHandler>(
+                make_shared<SimpleRequestHandler>());
+
+        server = PrimitiveServerResource::Builder("a/test", "", "").create();
+
+        server->setAttribute(EXISTING, ORIGIN_VALUE);
+    }
+};
+
+TEST_F(SetRequestProxyHandlerTest, NothingHappenedWithEmptyAttrs)
+{
+
+    setRequestProxyHandler->buildResponse(*server, requestAttrs);
+
+    ASSERT_EQ(ORIGIN_VALUE, server->getAttribute<int>(EXISTING));
+}
+
+
+TEST_F(SetRequestProxyHandlerTest, ServerAttributesChangedIfOnlySameKeyExists)
+{
+    int newValue{ 100 };
+
+    requestAttrs[EXISTING] = newValue;
+
+    setRequestProxyHandler->buildResponse(*server, requestAttrs);
+
+    ASSERT_EQ(newValue, server->getAttribute<int>(EXISTING));
+}
+
+TEST_F(SetRequestProxyHandlerTest, ThrowIfTypeMismatch)
+{
+    requestAttrs[EXISTING] = "";
+
+    ASSERT_THROW(setRequestProxyHandler->buildResponse(*server, requestAttrs), PrimitiveException);
+}
+
+TEST_F(SetRequestProxyHandlerTest, ThrowIfRequestAttrsHasUnknownKey)
+{
+    constexpr char unknownKey[]{ "???" };
+
+    requestAttrs[EXISTING] = ORIGIN_VALUE;
+    requestAttrs[unknownKey] = ORIGIN_VALUE;
+
+    ASSERT_THROW(setRequestProxyHandler->buildResponse(*server, requestAttrs), PrimitiveException);
+}