From acdaf53f89701254bea28bbf805a8e3edd435cdd Mon Sep 17 00:00:00 2001 From: coderhyme Date: Sat, 13 Jun 2015 17:30:34 +0900 Subject: [PATCH] Compose RequestHandler unit tests Change-Id: Ibeda49a84f1d2801bbc37ca918287be22261061a Signed-off-by: coderhyme Reviewed-on: https://gerrit.iotivity.org/gerrit/1310 Reviewed-by: Uze Choi Tested-by: Uze Choi --- service/basis/serverBuilder/src/RequestHandler.cpp | 1 - .../serverBuilder/unittests/RequestHandlerTest.cpp | 127 +++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 service/basis/serverBuilder/unittests/RequestHandlerTest.cpp diff --git a/service/basis/serverBuilder/src/RequestHandler.cpp b/service/basis/serverBuilder/src/RequestHandler.cpp index 0a15805..6322fbf 100644 --- a/service/basis/serverBuilder/src/RequestHandler.cpp +++ b/service/basis/serverBuilder/src/RequestHandler.cpp @@ -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 index 0000000..fb01ded --- /dev/null +++ b/service/basis/serverBuilder/unittests/RequestHandlerTest.cpp @@ -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 +#include + +#include + +#include + +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()); +} + + + +class SetRequestProxyHandlerTest: public Test +{ +public: + PrimitiveServerResource::Ptr server; + ResourceAttributes requestAttrs; + RequestHandler::Ptr setRequestProxyHandler; + +protected: + void SetUp() override + { + setRequestProxyHandler = make_shared( + make_shared()); + + 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(EXISTING)); +} + + +TEST_F(SetRequestProxyHandlerTest, ServerAttributesChangedIfOnlySameKeyExists) +{ + int newValue{ 100 }; + + requestAttrs[EXISTING] = newValue; + + setRequestProxyHandler->buildResponse(*server, requestAttrs); + + ASSERT_EQ(newValue, server->getAttribute(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); +} -- 2.7.4